zoukankan      html  css  js  c++  java
  • shiro

    一.认证
    subject接受token,通过其实现类DelegatingSubject将token委托给SecurityManager来完成认证。SecurityManager是接口通过DefaultSecurityManager来完成相关功能。由DefaultSecurityManager中login来完成认证过程。在login中调用了该类authenticate()来完成认证。该方法是由AuthenticatingSecurityManager(DefaultSecurityManager是其子类)来完成的。在该类的authenticate()中,通过调用authenticator(认证器)来完成认证工作。Authenticator是由默认实现类ModularRealmAuthenticator来完成认证。通过ModularRealmAuthenticator中的doAuthenticate来获取realms信息。如果是单realm直接将token和realm中的数据进行比较,判断是否认证成功。如果是多realm那么需要通过AuthenticationStrategy(认证策略)来完成对应的认证工作。

    AuthenticationStrategy(认证策略):默认
    AtLeastOneSuccessfulStrategy 至少一条满足的情况
    AllSuccessfulStrategy 所有都满足的情况
    FirstSuccessfulStrategy 第一条满足的情况

    二.授权
    hasRole 返回Boolean
    checkRole 报异常
    isPermitted 返回Boolean
    checkPermission 报异常

    a)获取subject主体
    b)判断主体是否通过认证
    c)调用subject.isPermitted*/hasRole*来进行权限的判断
      i.Subject是由其实现类DelegatingSubject来调用方法的,该类将处理交给了securityManager
      ii.security是由其实现类DefaultSecurityManager来进行处理的,该类的isPermitted()来处理,其本质是父类AuthorizingSecurityManager(DefaultSecurityManager是其子类)的isPermitted方法(DefaultSecurityManager没有重写该方法)来处理。该方法将处理交给authorizer(授权器)来处理

      iii.Authotizer由其实现类ModularRealmAuthorizer来处理,在该类有PermissioniResolver对权限字符串(页面传过来的权限信息)进行解析。该类可以调用对应的Realm来获取数据(权限信息,如从数据库获取),在Realm中也有对应的PermissionResolver交给WildcardPermissionResolver,该类调用WildcardPermission来进行权限字符串的解析。

      iv.返回处理结果

  • 相关阅读:
    轻量级MVVM框架Stylet介绍:(13) ValidatingModelBase
    轻量级MVVM框架Stylet介绍:(9)PropertyChangedBase
    轻量级MVVM框架Stylet介绍:(8)事件聚合器
    轻量级MVVM框架Stylet介绍:(12) BindableCollection
    轻量级MVVM框架Stylet介绍:(14) StyletIoC
    轻量级MVVM框架Stylet介绍:(5) Actions
    轻量级MVVM框架Stylet介绍:(10) Execute:调度到UI线程
    轻量级MVVM框架Stylet介绍:(7) MessageBox
    轻量级MVVM框架Stylet介绍:(6) WindowManager
    tushare的mysql的sql结构文件
  • 原文地址:https://www.cnblogs.com/ezrealyi/p/13600275.html
Copyright © 2011-2022 走看看