什么是Shiro
一、什么是Shiro1
Apache Shiro是一个强大易用的Java安全框架,提供了(认证、授权、加密和会话管理)等功能:
- 认证 - 用户身份识别,常被称为用户“登录”;
- 授权 - 访问控制,系统提供的赋予用户访问某个功能的能力-----让系统知道你能做什么
- 密码加密 - 保护或隐藏数据防止被偷窥;
- 会话管理 - 每用户相关的时间敏感的状态。
- 权限数据模型(权限表、角色表、用户表、角色权限关系表、用户角色关系表)
- 常见的权限控制的方式
- URL拦截权限控制:基于过滤器或者拦截器
- 方法注解权限控制:基于代理技术
对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。
二、能做什么
以下是你可以用 Apache Shiro所做的事情:
1. 验证用户
2. 对用户执行访问控制,如:
判断用户是否拥有角色admin。
判断用户是否拥有访问的权限
5. 在任何环境下使用 Session API。例如CS程序。
6. 可以使用多个用户数据源。例如一个是oracle用户库,另外一个是mysql用户库。
7. 单点登录(SSO)Single Sign On 功能。(一站式登录,天猫和淘宝)
8. “Remember Me”(记住我)服务 ,类似购物车的功能,shiro官方建议开启。
二、特点
- 易于使用
- 广泛性
- 灵活性
- web能力
- 可插拔
(Spring Grails 、Wicket、Tapestry、Mule、Apache Camel、Vaadin̑ 无缝集成
三、运行流程图(执行流程参见:认证过程)

四、体系结构(三个核心组件)
ApplicationCode:
- 1. 应用程序代码,开发人员编写的代码
- Subject
- 当前跟软件交互的东西(比如用户,Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。 )
- SecurityManager:
- 它是Shiro框架的核心,典型的Facade(外观)模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
- Realms:
- 1. 负责访问安全数据(用户数据、角色数据、权限数据)
- Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
- 从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
- Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
- 框架体系结构图
**Shiro主要组件还包括: **
- Shiro的4大部分 (身份验证,授权,会话管理和加密)
- Authentication(身份验证):,简称“登录”。
- Authorization(授权):,给用户分配角色或者权限资源
- Session Management:用户session管理器,可以让CS程序也使用session来控制权限
- Cryptography:把JDK中复杂的密码加密方式进行封装。
三、Shiro提供的权限控制方式(参见Shiro与Spring整合)
- URL拦截权限控制
- 方法注解权限控制
- 页面标签权限控制
- 代码级别权限
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!