Shiro之从数据库初始化角色权限信息

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  

        <!-- Shiro的核心安全接口,这个属性是必须的 -->  

        <property name="securityManager" ref="securityManager"></property>  

        <!-- 未认证,要跳转的url,非必须的属性,默认会自动寻找Web工程根目录下的"/login.jsp"页面 -->  

        <property name="loginUrl" value="/loginPage"></property>   

        <!-- 未授权,要跳转的url -->  

        <property name="unauthorizedUrl" value="/unauthorizedPage"></property>  

        <property name="filterChainDefinitions">

        <!-- anon:可以匿名访问  authc:必须认证登录后才能访问 -->  

            <value>  

                /loginPage=anon

                /doLogin=anon

                /doLogout=anon

                /page1 = roles[role1]

                /page2 = roles[role2]  

                /*=authc  

            </value>  

        </property>  

</bean>

以上filterChainDefinitions是纯手工配置,但实际应从数据库读取

新建一个FilterChainDefinitionMapBuilder

public class FilterChainDefinitionMapBuilder {

public LinkedHashMap<String, String> buildFilterChainDefinitionMap(){

LinkedHashMap<String, String> map = new LinkedHashMap<>();

//从数据库读取省略...

map.put("/loginPage", "anon");

map.put("/doLogin", "anon");

map.put("/doLogout", "anon");

map.put("/page1", "roles[role1]");

map.put("/page2", "roles[role2]");



map.put("/**", "authc");

return map;

}

}

xml修改如下

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  

        <!-- Shiro的核心安全接口,这个属性是必须的 -->  

        <property name="securityManager" ref="securityManager"></property>  

        <!-- 未认证,要跳转的url,非必须的属性,默认会自动寻找Web工程根目录下的"/login.jsp"页面 -->  

        <property name="loginUrl" value="/loginPage"></property>   

        <!-- 未授权,要跳转的url -->  

        <property name="unauthorizedUrl" value="/unauthorizedPage"></property>  



        <property name="filterChainDefinitionMap" ref="filterChainDefinitionMap"></property>

</bean>

<!-- 配置一个 bean, 该 bean 实际上是一个 Map. 通过实例工厂方法的方式 -->

<bean id="filterChainDefinitionMap" factory-bean="filterChainDefinitionMapBuilder" factory-method="buildFilterChainDefinitionMap"></bean>

<bean id="filterChainDefinitionMapBuilder" class="com.zns.shiro.FilterChainDefinitionMapBuilder"></bean>

猜你喜欢

转载自www.cnblogs.com/zengnansheng/p/10389596.html
今日推荐