shiro处理流程图
2018-12-11 11:06:47 1 举报
Shiro流程
作者其他创作
大纲/内容
是否登录请求
Redis加载authorizationInfo
AuthorizingRealm
SecurityManager
门面委托
否
LoginFilter的onLoginSuccess方法捕获
RedisCache获取登录次数
user信息为空
AuthorizingRealm的isPermitted方法是否通过
请求失败
是
是否有自定义权限拦截
抛IncorrectCredentialsException异常
LoginFilter的onAccessDenied方法捕获
LoginFilter的onLoginFailure方法捕获
是否已认证
说明:因为我们走域账号登录,所以凭证管理器不验证密码是否正确以及是否登录次数是否大于阈值,这里doCredentialsMatch方法直接返回true
UserRealm存入info
isAuthenticated&&exceptName==null
登录请求
外观模式
跳转首页
CredentialsMatcher凭证匹配器
登录异常或账号或密码错误
用户登录信息放入session
是否拦截
登录页面
AccessControlFilterPathMatchingFilterAdviceFilterSpringWeb的OncePerRequestFilter以及其它filter
此拦截器通过,下面的拦截器会通过
UserRelam
客户请求
shiro执行流程
请求成功
抛UnknownAccountException异常
返回JSON给前端
域账号登录
登录验证doGetAuthenticationInfo
Redis存入值,key是:platform:authorizationCache:域账号
AuthorizingRealm的getAuthorizationInfo方法获取permsInfo
POST请求
info是否为空
PermissionsAuthorizationFilter的isAccessAllowed方法拦截
authorizationCache是否为空
验证密码及重试次数是否大于阈值
AuthenticatingRealm
调用LoginFilter的isAccessAllowed方法
Subject
收藏
0 条评论
回复 删除
下一页