一、shiro结构
1、主要功能
Authentication:身份认证
Authorization:授权
Session Manager:会话管理
Cryptography:加密
2、支持特性
Web Support:Web支持
Caching:缓存
Concurrency:并发编程
Testing:测试支持
Run As:代理访问
Remember Me:记住我
3、外部结构
Subject:用户主体
SecurityManager:安全管理器
Realm:数据源
4、内部结构
Subject:用户主体
SecurityManager:安全管理器
Authenticator:认证器
Authrizer:授权器
Realm:数据源
SessionManager:会话管理
SessionDao:会话管理储存
CacheManager:缓存管理器
Cryptography:密码模块
二、调用
1、登录
创建SecurityManager工厂
生成securityManager
设置给SecurityUtils
从SecurityUtils得到subject
创建token
subject.login()
isAuthenticated()
2、认证器
Realm:可以配置多realm
Authenticator:认证器
AuthenticationStrategy:认证器策略,在多realm时返回不同的认证结果
三、授权
1、授权
Subject:主体
Resource:资源
Permission:权限
Role:角色
2、授权方式
编程式
注解式
标签式
3、基于角色
hasRole:是否拥有权限
hasAllRoles:是否拥有全部权限
hasRoles:返回拥有的权限列表
4、基于权限
isPermitted:判断权限
isPermittedAll:判断全部权限
checkPermission:失败抛异常
checkPermissions:失败抛异常
5、授权流程
Authorizer
PermissionResolver
RolePermissionResolver
doGetAuthenticationInfo:获取身份验证信息
doGetAuthorizationInfo:根据用户身份获取授权信息