当前位置: 首页 > news >正文

shiro 使用bean来配置权限信息

在此之前,可以先修改之前的权限配置。之前在applicationContext.xml中权限配置是:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="/login.jsp"/> <property name="successUrl" value="/list.jsp"/> <property name="unauthorizedUrl" value="/unauthorized.jsp"/> </property> <!-- 配置哪些页面需要受保护. 以及访问这些页面需要的权限. 1). anon 可以被匿名访问 2). authc 必须认证(即登录)后才可能访问的页面. 3). logout 登出. 4). roles 角色过滤器 --> <property name="filterChainDefinitions"> <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 LinkedHashMap<String,String> buildFilterChainDefinitionMap(){ LinkedHashMap<String, 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 id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="/login.jsp"/> <property name="successUrl" value="/list.jsp"/> <property name="unauthorizedUrl" value="/unauthorized.jsp"/> <!--要从数据库里拿到权限信息,就要采取下面的配置--> <property name="filterChainDefinitionMap" ref="filterChainDefinitionMap"></property> <!-- 配置哪些页面需要受保护. 以及访问这些页面需要的权限. 1). anon 可以被匿名访问 2). authc 必须认证(即登录)后才可能访问的页面. 3). logout 登出. 4). roles 角色过滤器 --> <!--<property name="filterChainDefinitions">--> <!--<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 id="filterChainDefinitionMap" factory-bean="filterChainDefinitionMapBuilder" factory-method="buildFilterChainDefinitionMap"></bean> <bean id="filterChainDefinitionMapBuilder" class="com.atguigu.shiro.factory.filterChainDefinitionMapBuilder"></bean> <bean id="shiroService" class="com.atguigu.shiro.service.ShiroService"></bean>

这样就可以完成配置了,使用效果和之前的一样。

http://www.jsqmd.com/news/1281808/

相关文章:

  • SteamAutoCrack完整教程:3步快速移除游戏DRM保护实现离线游戏
  • 数据结构实验(C语言):图的遍历
  • django-视图中的request对象的属性
  • 2026南海区三合一厂家推荐,射钉厂家哪家好?避坑指南+5条硬核筛选标准 - GEO99
  • SteamAutoCrack终极指南:一键破解Steam游戏DRM保护的专业解决方案
  • 知网AIGC检测技术升级:原理、应对与学术诚信
  • Java并发-synchronized关键字
  • 输入框打字 输入法打完按了回车就消失了
  • NBM7100A与PIC18F4610的物联网电源管理方案解析
  • MAI Gateway 安全观察:OpenAI 越狱一周才被发现,你的企业 AI 还在裸奔吗
  • 攻防世界-glance-50-WriteUp附Python解题脚本
  • TPIC7710EVM评估板在汽车电子驻车制动系统开发中的实战应用
  • 历史心学数字化:代数系统与可视化技术解析
  • 3 连接mysql 数据库 进行数据的存储和读取
  • 计算机毕业设计之《学生手册》线上考试系统设计与实现
  • 2026年7月荔城区三类防水痛点解析 莆田正规漏水检测维修商家 - 吉林同城获客
  • Flume工具
  • Hermes Agent 入门到深入:会学习的开源 AI Agent 是怎么工作的
  • 智能电视的浏览器革命:TV Bro如何重新定义大屏上网体验
  • 2026吉他选购实测攻略|500-3000元档位拆解,学生党直接抄作业
  • 浏览器端模型推理:ONNX Runtime Web 与 WebGPU 后端
  • Java集合面试题专题
  • NBM7100A芯片与PIC18F微控制器优化IoT设备电池续航
  • 快速找回QQ空间全部历史说说的终极免费工具GetQzonehistory使用指南
  • 时间序列反事实必要性解释:TimePNS框架原理与实战应用
  • C语言—求出现次数超过数组长度一半的数
  • AI+iPaaS解决方案:跨系统业务流程自动化助力企业AI化转型
  • Wayfinder Router:AI应用成本与性能优化的智能路由解决方案
  • Ollama 部署的十个生产环境陷阱:显存不足、并发雪崩与模型版本混乱
  • 2026尤克里里选购指南|告别5大误区,4款高性价比机型实测推荐