Springboot整個Shiro權限框架基礎踩坑

整合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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章