shiro 使用bean来配置权限信息

发布时间:2026/7/28 17:03:02
shiro 使用bean来配置权限信息 在此之前可以先修改之前的权限配置。之前在applicationContext.xml中权限配置是bean idshiroFilter classorg.apache.shiro.spring.web.ShiroFilterFactoryBean property namesecurityManager refsecurityManager/ property nameloginUrl value/login.jsp/ property namesuccessUrl value/list.jsp/ property nameunauthorizedUrl value/unauthorized.jsp/ /property !-- 配置哪些页面需要受保护. 以及访问这些页面需要的权限. 1). anon 可以被匿名访问 2). authc 必须认证(即登录)后才可能访问的页面. 3). logout 登出. 4). roles 角色过滤器 -- property namefilterChainDefinitions value /login.jsp anon /shiro/login anon /shiro/logout logout /user.jsp roles[user] /admin.jsp roles[admin] !--# everything else requires authentication:-- /** authc /value /property /bean可是如果这样的话如果要从数据库中拿到权限配置信息的话就比较麻烦现在我们可以建立一个bean里面为map来配置方便从数据库中拿到权限配置信息:1.先建立一个factory的包里面写入filterChainDefinitionMapBuilder.java:package com.atguigu.shiro.factory; import java.util.LinkedHashMap; //有的时候需要从数据库中拿到权限信息则要采用这种方式。 public class filterChainDefinitionMapBuilder { //采用这种方式方便从数据库中拿取权限信息 public LinkedHashMapString,String buildFilterChainDefinitionMap(){ LinkedHashMapString, String map new LinkedHashMap(); map.put(/login.jsp,anon); map.put(/shiro/login,anon); map.put(/shiro/logout,logout); map.put(/user.jsp,authc,roles[user]);//如果通过认证且角色为user map.put(/admin.jsp,authc,roles[admin]);//如果通过认证且角色为admin map.put(/list.jsp,user); map.put(/**,authc); return map; } }注意这是LinkedHashMap是有顺序的。2.修改applicationContext.xml配置文件bean idshiroFilter classorg.apache.shiro.spring.web.ShiroFilterFactoryBean property namesecurityManager refsecurityManager/ property nameloginUrl value/login.jsp/ property namesuccessUrl value/list.jsp/ property nameunauthorizedUrl value/unauthorized.jsp/ !--要从数据库里拿到权限信息就要采取下面的配置-- property namefilterChainDefinitionMap reffilterChainDefinitionMap/property !-- 配置哪些页面需要受保护. 以及访问这些页面需要的权限. 1). anon 可以被匿名访问 2). authc 必须认证(即登录)后才可能访问的页面. 3). logout 登出. 4). roles 角色过滤器 -- !--property namefilterChainDefinitions-- !--value-- !--/login.jsp anon-- !--/shiro/login anon-- !--/shiro/logout logout-- !--/user.jsp roles[user]-- !--/admin.jsp roles[admin]-- !--# everything else requires authentication:-- !--/** authc-- !--/value-- !--/property-- /bean !--要从数据库里拿到权限信息就要采取下面的配置-- !--需要配置一个bean该bean实际上是一个map通过实例化工厂的方式-- bean idfilterChainDefinitionMap factory-beanfilterChainDefinitionMapBuilder factory-methodbuildFilterChainDefinitionMap/bean bean idfilterChainDefinitionMapBuilder classcom.atguigu.shiro.factory.filterChainDefinitionMapBuilder/bean bean idshiroService classcom.atguigu.shiro.service.ShiroService/bean这样就可以完成配置了使用效果和之前的一样。