Shiro使用简介
核心组件
• Subject
• SecurityManager
• Realms
核心组件
• Subject:即“当前操作用户”
• SecurityManager:它是Shiro框架的核心,典型
的Facade模式,Shiro通过SecurityManager来管
理内部组件实例,并通过它来提供安全管理的各
种服务
• Realm充当了Shiro与应用安全数据间的“桥梁”
或者“连接器”。也就是说,当对用户执行认证
(登录)和授权(访问控制)验证时,Shiro会从
应用配置的Realm中查找用户及其权限信息
Shiro完整架构图
其他主要组件
• Authenticator :认证 ,核实用户身份
• Authorizer :授权 ,访问控制
• SessionManager :
• CacheManager :对Shiro的其他组件提供缓
存支持
Shiro认证过程
Shiro认证过程
1、应用程序构建了一个终端用户认证信息的
AuthenticationToken 实例后,调用Subject.login方法。
2、Sbuject的实例通常是DelegatingSubject类(或子类)
的实例对象,在认证开始时,会委托应用程序设置的
securityManager实例调用securityManager.login(token)方
法。
3、SecurityManager接受到token(令牌)信息后会委托内置
的Authenticator的实例(通常都是
ModularRealmAuthenticator类的实例)调用
authenticator.authenticate(token).
ModularRealmAuthenticator在认证过程中会对设置的一
个或多个Realm实例进行适配,它实际上为Shiro提供了一
个可拔插的认证机制。
Shiro认证过程
4、如果在应用程序中配置了多个Realm,
ModularRealmAuthenticator会根据配置的
AuthenticationStrategy(认证策略)来进行多Realm的认证
过程。在Realm被调用后,AuthenticationStrategy将对每
一个Realm的结果作出响应。
注:如果应用程序中仅配置了一个Realm,Realm将被直
接调用而无需再配置认证策略。
5、判断每一个Realm是否支持提交的token,如果支持,
Realm将调用getAuthenticationInfo(token);
getAuthenticationInfo 方法就是实际认证处理,我们通过
覆盖Realm的doGetAuthenticationInfo方法来编写我们自
定义的认证处理。