美文网首页
shiro介绍

shiro介绍

作者: 晚安多巴胺 | 来源:发表于2017-12-25 22:03 被阅读0次

    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表示授权失败。

    相关文章

      网友评论

          本文标题:shiro介绍

          本文链接:https://www.haomeiwen.com/subject/jpxwixtx.html