Spring boot 集成 shiro,anon(匿名)失效

Spring boot 集成 shiro,anon(匿名)失效

shiro

xml方式:
xml的配置文件中在“filters”标签的“filterChainDefinitions”属性中添加值为anon的url;
代码方式:
filterMap.put("/user/home", “anon”);
filterMap.put("/user/home", “anon”);
filterFactoryBean.setFilterChainDefinitionMap(filterMap)

通过以上两种方式可以让自定义的fiter或者配置的filter所在位置以上的匿名(anon)配置不经过filter的拦截;

但是系统集成spring boot后,anon失效了,全部会被filter拦截,网上找了很多是代码配置的解决方案,但是没有搜到xml配置的解决方案,这里主要讲一下xml配置的解决方案(其实效果是一样的);

代码的解决方案:
@Bean
public FilterRegistrationBean registration(自定义Filter filter) {
FilterRegistrationBean registration = new FilterRegistrationBean(filter);
registration.setEnabled(false);
return registration;
}
注:上述为最佳解决方案,既可以让filter仍然通过注入的方式让spring进行管理,同时又不会被spring默认注册;

xml的解决方案:

<bean id="guardianFilter"
    class="com.cmcc.omp.sec.mdmstu.service.common.impl.GuardianShiroFilter"/>
<bean id="registrationFilter"
    class="org.springframework.boot.web.servlet.FilterRegistrationBean">
    <property name="filter" ref="guardianFilter"></property> 
    <property name="enabled" value="false"></property> 
</bean>
 

如果需要自定义多个shiro的filter,则需要配置多个registrationFilter,在已有guardianFilter的基础上,新增一个 schoolMobileShiroFilter,org.springframework.boot.web.servlet.FilterRegistrationBean的id需要与上一个配置的不一样(命名为registrationFilter1,相当于new一个新的FilterRegistrationBean),这是因为当前提供的接口只支持传入一个filter

<bean id="schoolMobileShiroFilter"
    class="com.cmcc.omp.sec.mdmstu.service.common.impl.SchoolMobileShiroFilter"/>
  <bean id="registrationFilter1"
    class="org.springframework.boot.web.servlet.FilterRegistrationBean">
    <property name="filter" ref="schoolMobileShiroFilter"></property> 
    <property name="enabled" value="false"></property> 
  </bean>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值