shiro介绍

Subject主体,代表了当前“用户,所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者,它是Shiro的核心。Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源

认证执行流程

1、 创建token令牌,token中有用户提交的认证信息即账号和密码

2、 执行subject.login(token),最终由securityManager通过Authenticator进行认证
UnknownAccountException
IncorrectCredentialsException
3、 Authenticator的实现ModularRealmAuthenticator调用realm从数据库获取用户真实的账号和密码

4、 Realm先根据token中的账号去数据库中找该账号,如果找不到则给ModularRealmAuthenticator返回null,如果找到则匹配密码,匹配密码成功则认证通过。

授权流程如下:

1、首先调用Subject.isPermitted/hasRole接口,其会委托给SecurityManager,而
SecurityManager接着会委托给Authorizer;
2、Authorizer是真正的授权者,如果我们调用如isPermitted(“user:view”),其首先会通过
PermissionResolver把字符串转换成相应的Permission实例;
3、在进行授权之前,其会调用相应的Realm获取Subject相应的角色/权限用于匹配传入的
角色/权限;
4、Authorizer会判断Realm的角色/权限是否和传入的匹配,如果有多个Realm,会委托给
ModularRealmAuthorizer进行循环判断,如果匹配如isPermitted/hasRole会返回true,否
则返回false表示授权失败。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文章转载自:http://blog.csdn.net/w1196726224/article/details/53...
    wangzaiplus阅读 8,694评论 0 3
  • 一:基础概念 什么是权限管理 权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经...
    QGUOFENG阅读 3,627评论 0 0
  • 转:http://blog.csdn.net/u013142781Shiro的具体功能点如下:(1)身份认证/登录...
    esileme阅读 1,720评论 0 0
  • 身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用...
    小孩真笨阅读 3,610评论 0 0
  • 什么是Apache Shiro? Apache Shiro是一个功能强大且灵活的开源安全框架,主要功能包括用户认证...
    倔强的小亮阅读 5,834评论 0 3

友情链接更多精彩内容