zoukankan      html  css  js  c++  java
  • shiro原理及其运行流程介绍

    shiro原理及其运行流程介绍

    认证执行流程



    1、通过ini配置文件创建securityManager

    2、调用subject.login方法主体提交认证,提交的token

    3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。

    4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息

    5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro.ini查询用户信息,根据账号查询用户信息(账号和密码)

             如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码)

             如果查询不到,就给ModularRealmAuthenticator返回null

    6、ModularRealmAuthenticator接收IniRealm返回Authentication认证信息

             如果返回的认证信息是null,ModularRealmAuthenticator抛出异常(org.apache.shiro.authc.UnknownAccountException)
             如果返回的认证信息不是null(说明inirealm找到了用户),对IniRealm返回用户密码 (在ini文件中存在)

             和 token中的密码 进行对比,如果不一致抛出异常(org.apache.shiro.authc.IncorrectCredentialsException)

    授权流程


    1、对subject进行授权,调用方法isPermitted("permission串")

    2、SecurityManager执行授权,通过ModularRealmAuthorizer执行授权

    3、ModularRealmAuthorizer执行realm(自定义的Realm)从数据库查询权限数据

      调用realm的授权方法:doGetAuthorizationInfo
    4、realm从数据库查询权限数据,返回ModularRealmAuthorizer

    5、ModularRealmAuthorizer调用PermissionResolver进行权限串比对

    6、如果比对后,isPermitted中"permission串"在realm查询到权限数据中,说明用户访问permission串有权限,否则 没有权限,抛出异常。

    原   文

  • 相关阅读:
    全卷积神经网络FCN
    面试题 —— 面向对象
    【一题多解】平方根的计算及完全平方数的判断
    【一题多解】Python 字符串逆序
    JVM 自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优
    n 中选 m —— 随机采样的艺术
    位图(bitmap)—— C语言实现
    C++ STL 数据结构与算法 —— 排序
    斐波那契 —— 矩阵形式推导
    常用文本编辑器 editor 的常用插件 —— CopyEdit
  • 原文地址:https://www.cnblogs.com/zhukaixin/p/10722811.html
Copyright © 2011-2022 走看看