Shiro 权限处理(自我学习版)

本文介绍了Apache Shiro的基本概念、功能,包括授权、会话管理和加密。通过一个毕设系统的例子,详细讲解了Shiro的登录认证流程,并展示了如何自定义Realm进行登录验证。此外,还阐述了Shiro与SpringBoot的整合过程,包括配置SecurityManager、自定义Realm、过滤器设置等。最后,提到了前端页面的简单测试。

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

在做毕设系统的时候想要让我们的系统更加安全,并且看起来更加高大上,使用算法MD5,特学了shiro相关知识,首先什么是Shiro?

官方说法:Apache shiro是一个强大易用的开源安全框架,用于简化应用程序安全和加强其验证处理,以及控制访问控制行为,Apache shiro可以让帮助外面编写易于维护的安全和认证的实现,常用于web以及JavaEE的环境,其实说白了shiro就是一个通过过滤确定具体请求的URL是否允许访问,以及处理认证和授权的方法。

进一步了解shiro,我们可以先明确其基本功能

Authentication:身份认证/登录,验证用户是不是拥有相应的身份

Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即 判断用 户是否能进行什么操作

Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中

Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

Web Support:Web 支持,可以非常容易的集成到 Web 环境

Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,可以提高效率

Concurrency:Shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

Testing:提供测试支持;

Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了

原理: 从外部架构来看

 subject代表当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如机器人,网络爬虫等,与subject的所有交互都会委托给securityManager(安全管理器),subject相当于一个门面,securitymanager才是实际上的执行者,其管理所有的subject,是shiro的核心,他负责和shrio的其他组件进行交互交互,Realm(实际处理认证和授权工作的实体),shiro从Realm获取安全数据如角色,用户,权限,也就是说SecurityManager要验证用户身份,那么他需要从Realm获取相应的用户进行比较来确定用户的身份是否合法,也就是说需要从Realm中得到相应的用户信息进行验证用户能否进行操作

原理: 从内部架构来看

  • securityManager:是shiro的心脏,所有的具体交互都通过securitymanager进行控制,他管理着所有的subject且复杂进行认证、授权、会话及缓存的管理
  • Realm:可以有1个或者多个Realm,可以任务是安全实体数据源,即用于获取安全实体的,可以是JDBC实现,也可以是内存实现等,由用户提供,所以一般应用中都需要实现自己的realm
  • Cryptography:密码模块,Shiro 提高了一些常见的加密组件用于如密码加密/解密。
  • 登录认证基本流程
    • 收集用户身份/凭证,即用户名/密码调用 Subject.login 进行登录,如果失败将得到相应 的 AuthenticationException异常,根据异常提示用户错误信息;否则登录成功
    • 创建自定义的 Realm 类,继承 org.apache.shiro.realm.AuthenticatingRealm类,实现 doGetAuthenticationInfo() 方法

 具体使用Shiro如何整合到我们SpringBoot项目中

  • 与SpringBoot整合
    • 1.首先IDEA中正常创建springboot项目
    • 2.添加相关依赖
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值