# Shiro框架 filter&realm绑定
这种实现方式有问题,会影响到后续的角色验证。不建议看了
新的实现方式 : 自定义Token
- shiro filter与Realm绑定
- 使用Spring整合Shiro
- 多登陆入口,成功后跳转到不同地址
- 重写Realm获取方式
最近在项目中使用了apache的轻量级Shiro框架进行权限管理,使用了多个filter,Shiro会默认迭代Realm进行登陆,即使第一个Realm通过校验,也会继续迭代,造成性能的浪费,和数据库查询。又或者前Realm里做了一些校验,抛出了异常,也会被后面的无用的Realm校验失败抛出的一场覆盖。
不废话,上教程不废话,上教程
注意:这里filter统一指shiro 定义的filter
至于servlet的filter会写成 servlet filter
这是先前的配置
已经实现方式赋予Realm对应的role角色,已经有多入口,前后台分开的功能,
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- shiro 的核心安全接口 -->
<property name="securityManager" ref="securityManager" />
<!-- 未授权时要跳转的连接 -->
<property name="unauthorizedUrl" value="/unauthorized.jsp" />
<property name="filters">
<map>
<entry key="admin" value-ref="adminformAuthenticationFilter" />
<entry key="authc" value-ref="formAuthenticationFilter" />
</map>
</property>
<!-- shiro 连接约束配置 -->
<property name="filterChainDefinitions">
<value>
/user.html = authc
/admin.html =authc
/login.html = authc
/admin/login.html =admin
/logout = logout
/resource/** = anon
</value>
</property>
</bean>
<bean id="formAuthenticationFilter"
class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
<property name="loginUrl" value="/login.html" />
<property name="successUrl" value="/ok.html" />
</bean>
<bean id="adminformAuthenticationFilter"
class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
<property name="loginUrl" value="/admin/login.html" />
<property name="successUrl" value="/admin/ok.html" />
</bean>
<bean id="AdminRealm" class="cc.yihy.realm.AdminRealm">
<property name="userService" ref="UserService" />
</bean>
<bean id="UserRealm" class="cc.yihy.realm.UserRealm">
<property name="userService" ref="UserService" />
</bean>
<!-- 安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!-- 默认的Realm验证 -->
<property name="realms">
<list>
<ref bean="UserRealm" />
<ref bean="AdminRealm"></ref>
</list>
</property>
</bean>
<bean id="lifecycleBeanPostProcessor"