感谢作者:本文来源 http://www.iocoder.cn/Shiro/xiaoqiyiye/intro/
- SecurityManager :安全管理,Shiro最核心的组件,Shiro通过SecurityMananger 来管理内部组件的实例,初始化实例。并通过他来提供安全管理的各种服务。
- Authenticator:认证器,认证AuthenticationToken是否有效
- Authorizer:授权器,处理角色和权限。
- subject:当前操纵主体,表示当前操作的用户
- SubjectContext:Subject 上下文数据对象
- AuthenticationToken:认证token信息,(用户名和密码)
- ThreadContext:线程上线问对象,负责绑定对象当前线程
在学习和使用Shiro过程中,我们知道SecurityManager接口时Shireo中最合性的接口,我们就沿着这个接口进行分析下面的代码是SecurityManager接口的定义:
public interface SecurityManager extends Authenticator, Authorizer, SessionManager { //认证器 //授权器 /** * 登录 */ Subject login(Subject subject, AuthenticationToken authenticationToken) throws AuthenticationException; /** * 登出 */ //操作主题当前用户 void logout(Subject subject); /** * 创建Subject */ Subject createSubject(SubjectContext context); }
在SecurityManager 中有三个方法,一个是登陆,等处,创建Object 。通常我们是这么使用的,
- 首先创建Subject对象,
- 然后通过调用login方法传入认证信息token对登陆进行认证。
Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123"); subject.login(token);
SecurityUtils 分析
在Shiro中提供了一个方便使用的工具类SecurityUtils,SecurityUtils核心功能是获取SecurityManager ,以及获取subject