52-Shiro-1

本文深入探讨Apache Shiro权限框架,涵盖其核心功能如身份验证、授权、会话管理和加密。解析Shiro架构,包括Subject、SecurityManager、Realm等关键组件,并介绍如何利用Shiro进行用户权限控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.shiro

安全+权限框架,不光光是权限,而且是一个安全框架

这里额外要声明一下:用户登陆以后,是可以根据用户的权限,给用户设置权限页面的,但是,关于权限分配的代码,明显不应该由后台来写,这里还是要用vue来写,学习shiro的目的主要在于进行校验,而如何用vue进行用户的权限分配来控制其访问,这个方面目前还是一片空白

2.主要功能

①Authentication(登录认证)

②Authorization(授权)

③SessionManagement

④cryptography(加密)

3.shiro架构的一些组成

①Subject:任何可以与应用交互的"用户"

②SecurityManager:相当于SpringMVC里面的DispatcherServlet(前端控制器);是shiro的心脏,所有具体的交互都通过SecurityManager进行控制;它管理所有的subject、且负责进行认证、授权、会话及缓存的管理

③Authenticator:负责Subject认证,是一个扩展点,可以自定义实现;可以使用认证策略(Authentication Strategy),自定义什么情况下,用户认证通过

④Authorizer:授权器,即访问控制器,用来决定主体是否有权限进行相应的操作;即控制用户可以访问哪些功能

⑤Realm:可以有1个或者多个Realm,可以认为是安全实体数据源,即用于获取安全实体的,可以是JDBC实现,也可以是内存实现;由用户提供,所以一般在应用中都需要实现自己的Realm

⑥SessionManager:管理Session生命周期的组件,而shiro不仅仅可以在web下用,也可以在普通的se中用

⑦CacheManager:缓存控制器,来管理如:用户、角色、权限等缓存;因为这些数据很少改变,放到缓存中后可以提高访问性能

⑧Cryptography:密码模块,shiro会提供一些常见的加密组件

4.jar包

在本demo里面exclusion里面写了slf4j,但是实际上shiro是需要slf4j以及log4j的,这里把视频教程里面的需要的jar包全部给列出来-->

-shiro-all-1.3.2.jar

-log4j-1.2.15.jar

-slf4j-api-1.6.1.jar

-slf4j-log4j12-1.6.1.jar

5.配置文件

在视频里面是还有shiro.ini的,但是demo里面只有shiro的xml配置文件

这里必须配置log4j,关于log4j的警告,不着急处理

6.一般流程

①创建Subject

②判断是否已经认证(登录),如果没有认证,把username和pwd封装在一个usernamePasswordToken对象里面

③用这个token进行登录

④session,关于session,是保存在服务端的,现在往session里面存一组map,那么,取得时候一样可以取出来,这就是之前验证CAPTCHA的做法

⑤currentUser这对象,之前是Subject的实例,现在判断用户是否授权(登录),就是用的这个实例

⑥RememberMe就是常见的,如果用户勾选了记住我,那么下次就会自动登录

⑦currentUser(Subject)在login的时候会抛几种异常:

-->UnknowAccountException:没有指定的账户

-->IncorrectCredentialException:凭证异常(账户存在,密码错误)

-->LockedAccountException:用户被锁定的异常

-->AuthenticationException:上面所有异常的父类,还有一些异常暂时不看了

7.role

关于shiro的角色问题,现在单独拿出来讲

currentUser.hasRole可以判断登陆的用户属于哪个角色

8. 具备某项许可

currentUser.isPermitted()

后面写的应该是具备该role的用户可以做的事情的权限

这里的意思是,允许对winnebago这个类型的drive的实例做eagle5这个事

以上就是一种“行为”

9.登出

Subject的logout

关于shiro以后在spring里面的注解等后续再看

<think>好的,我现在需要帮助用户查找与FEBS-Shiro相关的技术信息和解决方案。首先,我应该先理解FEBS-Shiro是什么。根据用户提供的引用内容,FEBS-Shiro是基于Spring Boot 2.1.3、Shiro 1.4.0和Layui 2.5.4构建的权限管理系统[^1][^2]。系统包含多个功能模块,如系统管理、系统监控、任务调度、代码生成等[^4]。接下来,用户需要技术文档、教程以及问题解决方面的信息。 首先,我需要检查用户提供的引用内容是否有直接的技术文档链接或教程。不过引用中并没有给出具体的链接,只有项目名称和功能模块的描述。因此,可能需要建议用户查找这些资源的方法。 技术文档方面,常见的做法是查看项目的GitHub仓库或官方文档。由于FEBS-Shiro是一个开源项目,可能在GitHub上有详细的README和Wiki。用户可以通过搜索“FEBS-Shiro GitHub”来找到仓库,里面通常会有安装指南、配置说明和API文档。例如,系统管理模块中的用户管理、角色管理可能涉及到Shiro的权限配置,文档中应该会有相关章节说明如何配置角色和权限[^4]。 关于教程,除了官方文档,技术博客或视频平台(如B站)可能会有开发者分享的教程。用户还可以参考CS-Notes这样的资源,其中包含后端面试和系统设计的基础知识,可能涉及Shiro和Spring Boot的整合[^3]。此外,代码生成模块和FEBS组件的使用可能需要具体的示例,用户可以在代码仓库的示例部分或Issues中寻找常见问题的解决方案。 问题解决方面,常见的Shiro问题包括权限配置错误、会话管理问题、与Spring Boot的集成问题等。用户应当检查日志文件,特别是系统监控模块中的系统日志和登录日志[^4],这些可能提供错误线索。例如,如果遇到权限失效,可能需要检查Shiro的过滤器链配置是否正确,或者角色与菜单的关联是否有误。另外,用户提到的调度日志和定时任务模块可能涉及到任务执行失败的问题,需要确认任务配置和依赖是否正确。 此外,用户可能需要了解如何扩展系统功能,比如添加新的模块或集成其他组件。根据引用中的其他模块,如APEX图表和高德地图,可以推测系统支持扩展,可能需要参考现有模块的实现方式,或查阅Layui的文档来定制前端组件。 如果用户遇到具体错误,比如启动失败或依赖冲突,建议检查Spring Boot和Shiro的版本兼容性,因为引用中提到使用的是Spring Boot 2.1.3和Shiro 1.4.0。版本不匹配可能导致库冲突,需要确保所有依赖的版本一致。 总结来说,用户需要以下几个步骤来获取所需信息:1. 访问FEBS-Shiro的GitHub仓库获取文档;2. 参考CS-Notes等资源学习基础知识;3. 利用系统日志进行问题排查;4. 在社区或Issues中寻求帮助。如果这些步骤无法解决问题,可能需要更详细地描述具体问题,以便进一步分析。</think>关于FEBS-Shiro的技术信息和解决方案,以下是结构化整理: ### 一、基础技术架构 FEBS-Shiro是基于$Spring\ Boot\ 2.1.3$和$Shiro\ 1.4.0$的权限管理系统,前端采用$Layui\ 2.5.4$框架[^1]。其模块化设计包含: $$ \begin{cases} 系统管理(用户/角色/菜单/部门) \\ 系统监控(日志/请求追踪/JVM监控) \\ 代码生成(配置模板/自动生成) \end{cases} $$ ### 二、技术文档获取途径 1. **GitHub仓库**:搜索关键词`FEBS-Shiro GitHub`,查看项目的README.md和Wiki 2. **系统功能手册**:重点关注: - 权限控制流程:$RBAC模型 \rightarrow 用户-角色-菜单映射$ - 代码生成器配置:$模板引擎参数设置$ - 请求追踪实现:$AOP切面编程$ 3. **Shiro官方文档**:特别关注`FilterChain`配置和`Realm`自定义[^3] ### 三、典型问题解决方案 | 问题类型 | 排查步骤 | 工具支持 | |---------|---------|---------| | 登录失败 | 1. 检查`shiro.ini`加密配置<br>2. 查看登录日志时间戳[^4] | 系统监控 → 登录日志 | | 权限失效 | 1. 验证角色菜单关联关系<br>2. 检查注解`@RequiresPermissions` | 在线用户 → 权限预览 | | 代码生成异常 | 1. 验证数据库连接配置<br>2. 检查模板语法 | 代码生成 → 生成配置 | ### 四、进阶开发建议 1. **扩展功能**: - 集成高德地图:调用`AMap API`时注意跨域问题 - 添加API监控:通过$Spring\ Boot\ Actuator$扩展端点 2. **性能优化**: - 使用$Redis$缓存权限数据:$$ TTL=3600s,\ 内存分配\leq 20\% $$ - 定时任务线程池配置:$$ corePoolSize=CPU核数 \times 2 $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值