整合Thymeleaf出現的問題
在Springboot+Thymeleaf+Shiro處理的過濾器中,發現了這樣的一種問題,如果只把html路徑放到過濾器裏,如果使用Thymeleaf訪問的話還是可以繼續訪問的,所以除了文件路徑,還把Thymeleaf的配置路徑放到了過濾器中。
/**
* 設置安全管理器
*
* @param securityManager
* @return
*/
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager); // 設置安全管理器
/**
* 添加Shiro內置過濾器
* 常用的過濾器:
* anno : 無需認證(登錄即可訪問)
* authc : 必須認證纔可以訪問
* user : 如果使用rememberMe的功能可以直接訪問
* perms : 該資源必須得到資源權限纔可以訪問
* role : 該資源必須的到角色權限纔可以訪問
*/
Map<String, String> fileterMap = new LinkedHashMap<>();
// 左側設置資源路徑,右側設置過濾規則
fileterMap.put("/admin/add.html", "authc");
fileterMap.put("/admin/update.html", "authc");
fileterMap.put("/admin/delete.html", "authc");
// 親自測試,thymeleaf的路徑也需要過濾
fileterMap.put("/add", "authc");
fileterMap.put("/update", "authc");
fileterMap.put("/delete", "authc");
// 所有頁面都設置一個過濾規則
// Shiro 的 fileterMap 還可以過濾 thymeleaf 相關 model 內容
// fileterMap.put("/admin/*", "authc");
// 修改調整的登錄頁面
shiroFilterFactoryBean.setLoginUrl("/login");
// 修改未授權的提示頁面
shiroFilterFactoryBean.setUnauthorizedUrl("/unAuth");
shiroFilterFactoryBean.setFilterChainDefinitionMap(fileterMap);
return shiroFilterFactoryBean;
}