1. 程式人生 > >Springboot整合shiro時靜態資源被攔截的問題

Springboot整合shiro時靜態資源被攔截的問題

目錄結構如下


在自己配置的ShiroConfig中已經放行了

filterChainDefinitionMap.put("/static/**", "anon");

login.ftl也引用了靜態資源

<link rel="stylesheet" type="text/css" href="/logins/css/normalize.css" />
<link rel="stylesheet" type="text/css" href="/logins/css/demo.css" />
<link rel="stylesheet" href="/logins/js/vendor/jgrowl/css/jquery.jgrowl.min.css"
>

可是資源依然被攔截了

於是註釋掉了

//filterChainDefinitionMap.put("/**", "authc");

靜態資源可以訪問了, 說明不是shiro的內在問題.

經過一番考慮, 感覺像是靜態資源路徑的問題, 於是在瀏覽器控制檯看一下source的路徑, 發現靜態資源的路徑前面是沒有static的, 因而shiro也不會放行.

springboot預設會將static目錄中的內容做為classes根目錄的內容釋出到web伺服器, 所以如果想要放行靜態資源, 同時又要實現攔截/**請求, 那麼我的解決辦法是:

解決辦法

目錄改造如下:


攔截配置:

filterChainDefinitionMap.put("/statics/**"
, "anon");
filterChainDefinitionMap.put("/**", "authc");

重啟web伺服器, 清除瀏覽器快取, 此時source中已經是正確的路徑了, 靜態資源被引用了.問題解決

記錄一下自己犯得低階錯誤, 見笑見笑 (笑哭臉)