• Shiro认证和鉴权的流程


    1.Shiro的作用
    Shiro是一个权限管理框架.提供了身份认证、授权、密码加密和回话管理.

    2.Shiro中Subject、SecurityManager、Realm的作用.
    Subject:主体,代表了当前“用户”,表示要和应用交互的东西.
    SecurityManager: 安全管理器. Shiro中所有的操作都是通过安全管理器操作的.
    内部会把Subject发出的请求转发到对应的内部组件中完成具体功能
    Realm: 域,shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作(通常我们使用自定义的Realm)

    3. Shiro认证的流程.(Subject,SecurityManager,Authenticator,Realm做了哪些事情)
    1.将需要登录的账号和密码封装成UsernamePasswordToken
    2.然后从SecurityUtils中获取Subject对象,然后调用login方法,把token作为参数传入.
    3.调用subject.login()之后,会交给SecurityManager进行请求的处理.
    4.安全管理器SecurityManager会把请求转发给认证器Authenticator
    5.认证器Authenticator会调用Realm中的方法并把token作为参数传入
    6.我们需要在Realm中根据用户名从数据库中查询用户信息并封装成认证信息对象SimpleAuthenticationInfo
    7.如果返回的SimpleAuthenticationInfo对象为空会抛出异常
    8.认证器Authenticator会拿到传入token中的password和返回认证信息对象SimpleAuthenticationInfo中的password进行比对,如果不一致则抛出异常.

    4.Shiro鉴权的流程.(Subject,SecurityManager,Realm做了哪些事情)
    1.会先判断用户是否已经登录,如果没登录返回false,登录继续后续流程
    2.然后会通过安全管理器securityManager判断当前登录用户是否有该权限.
    3.安全管理器securityManager会调用Realm中的方法获取当前用户拥有的角色/权限集合
    4.然后判断用户的角色/权限集合中是否包含当前判断的权限,如果包含返回true,否则返回false.

  • 相关阅读:
    面向对象编程原则(01)——概述
    自定义MVC原理
    LeetCode146.LRU缓存
    C++——string的模拟实现+详细讲解
    TCP连接
    内存取证系列6
    go语言并发
    数据分析和可视化平台:Splunk Enterprise for mac v9.1.1激活版 兼容m1
    怎样能写好年终总结报告?
    排序算法动图
  • 原文地址:https://blog.csdn.net/web13985085406/article/details/126496498