springboot2.x shiro 自定义Filter 无法访问配置不拦截的请求

本文详细介绍了如何在Shiro框架中配置自定义的过滤器,包括设置DefaultWebSecurityManager、FormAuthenticationFilter以及LogoutFilter的过程。同时,讨论了不同写法对anon请求的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置自定义的filter

@Bean   // DefaultWebSecurityManager securityManager
public ShiroFilterFactoryBean shiroFilter(   DefaultWebSecurityManager securityManager){
     ShiroFilterFactoryBean shiroFilterFactoryBean=new ShiroFilterFactoryBean();
     shiroFilterFactoryBean.setSecurityManager(securityManager); 
    Map<String,String> filterChainDefinitionMap = new LinkedHashMap<>();
    filterChainDefinitionMap.put("/jcaptcha/*.*", "anon");
    filterChainDefinitionMap.put("/sys/login", "authc");
    filterChainDefinitionMap.put("/**", "authc"); 
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); 
     shiroFilterFactoryBean.setLoginUrl("/sys/login");
     Map<String, Filter> filters = shiroFilterFactoryBean.getFilters();
     filters.put("authc",new FormAuthenticationFilter());----> 这是正确的写法
     filters.put("logout",logoutFilter()); 
 
    return shiroFilterFactoryBean;
}

 

filters.put("authc",getFormAuthenticationFilter());---->  当这样写时, 配置的anon 请求将无法访问

@Bean

public FormAuthenticationFilter getFormAuthenticationFilter(){

     return new FormAuthenticationFilter ();

}

如果不配置自定义拦截请求, 则shiro根据配置的拦截顺序拦截

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值