SpringBoot 集成shiro后一直攔截靜態(tài)資源問題

前言

剛做完一個項(xiàng)目,然后回頭重新重構(gòu)之前的一個框架,之前重構(gòu)了一半,然后最近對SpringBoot非常感興趣,所以想將框架與SpringBoot整合,簡化配置,結(jié)果各種被攔截

環(huán)境

shiro:1.3.2

配置
package cn.ims.configuration;

import cn.ims.common.shiro.CustomRealm;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.mgt.SecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

@Configuration
public class ShiroConfiguration {

    //將自己的驗(yàn)證方式加入容器
    @Bean
    public CustomRealm myShiroRealm() {
        return new CustomRealm();
    }

    //權(quán)限管理,配置主要是Realm的管理認(rèn)證
    @Bean
    public SecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myShiroRealm());
        return securityManager;
    }

    //Filter工廠,設(shè)置對應(yīng)的過濾條件和跳轉(zhuǎn)條件
    @Bean
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        Map<String,String> map = new LinkedHashMap<String, String>();
        //不過濾
        map.put("/images/**","anon");
        map.put("/js/**","anon");
        map.put("/css/**","anon");
        map.put("/lib/**","anon");
        map.put("/fonts/**","anon");
        map.put("/icons/** ","anon");
        map.put("/page/home/**","anon");
        map.put("/page/login/**","anon");
        map.put("/page/register/**","anon");
        map.put("/page/404/**","anon");
        map.put("/loginController/login","anon");
        map.put("/","anon");
        //對所有用戶認(rèn)證
        map.put("/**","authc");
        //登出
        map.put("/logout","logout");
        //登錄
        shiroFilterFactoryBean.setLoginUrl("/page/login/login.html");
        //首頁
        //shiroFilterFactoryBean.setSuccessUrl("/index");
        //錯誤頁面,認(rèn)證不通過跳轉(zhuǎn)
        //shiroFilterFactoryBean.setUnauthorizedUrl("/error");
        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
        return shiroFilterFactoryBean;
    }

    //加入注解的使用,不加入這個注解不生效
    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
        return authorizationAttributeSourceAdvisor;
    }
}

這里有2個坑:

  • SecurityManager 有兩個 一個是包 java.lang 中的,一個是 org.apache.shiro.mgt 中的
  • Map<String,String> map = new LinkedHashMap<String, String>(); 網(wǎng)上很多教程都是用的HashMap 看源碼后才發(fā)現(xiàn)應(yīng)該用LinkedHashMap,否則會出現(xiàn)資源只能加載一次然后就被攔截的情況
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 后臺管理系統(tǒng) 業(yè)務(wù)場景 spring boot + mybatis后臺管理系統(tǒng)框架; layUI前端界面; shi...
    漢若已認(rèn)證閱讀 10,189評論 2 69
  • 經(jīng)常和孩子待在一起會發(fā)現(xiàn),有時候當(dāng)孩子做了一件在我們眼里不可思議的事情時候,我們會很抓狂很暴躁。如果孩子搗蛋一點(diǎn),...
    米小讀書閱讀 14,995評論 0 4
  • 此博客專為蘋果APPSTORE,APP技術(shù)支援網(wǎng)址。 有何問題或疑問,歡迎致信:414078791@qq.com。...
    賣魚人閱讀 202評論 0 0
  • 原本安排8月體檢,因?yàn)榈搅嗽碌祝幚響{證、出報(bào)表,一直沒有去。估計(jì)體檢的高峰期結(jié)束了,今天早早到了煤礦醫(yī)院,哇,大...
    安靜131閱讀 249評論 0 0

友情鏈接更多精彩內(nèi)容