携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情
-
SecurityManager
SecurityManager权限管理器,它是shiro的核心,负责对所有的subject进行安全管理。 通过SecurityManager可以完成subject的认证、授权等,SecurityManager是通过Authenticator进行认证, 通过Authorizer进行授权,通过SessionManager进行会话管理等。 SecurityManager是一个接口,继承了Authenticator, Authorizer, SessionManager这三个接口
-
Authenticator
Authenticator即认证器,对用户登录时进行身份认证
-
Authorizer
Authorizer授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。
-
Realm(数据库读取+认证功能+授权功能实现)
Realm领域,相当于datasource数据源,securityManager进行安全认证需要通过Realm获取用户权限数据 比如: 如果用户身份数据在数据库那么realm就需要从数据库获取用户身份信息。 注意: 不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验的相关的代码。
-
SessionManager
SessionManager会话管理,shiro框架定义了一套会话管理,它不依赖web容器的session, 所以shiro可以使用在非web应用上,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。
-
SessionDAO
SessionDAO即会话dao,是对session会话操作的一套接口 比如: 可以通过jdbc将会话存储到数据库 也可以把session存储到缓存服务器
-
CacheManager
CacheManager缓存管理,将用户权限数据存储在缓存,这样可以提高性能
-
Cryptography
Cryptography密码管理,shiro提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能
第三章 Shiro入门
1、身份认证
【1】基本流程
流程如下:
-
1、Shiro把用户的数据封装成标识token,token一般封装着用户名,密码等信息
-
2、使用Subject门面获取到封装着用户的数据的标识token
-
3、Subject把标识token交给SecurityManager,在SecurityManager安全中心中,SecurityManager把标识token委托给认证器Authenticator进行身份验证。认证器的作用一般是用来指定如何验证,它规定本次认证用到哪些Realm
-
4、认证器Authenticator将传入的标识token,与数据源Realm对比,验证token是否合法