• frame shiro 授权及原理简述


    shiro 授权模式

    shiro采用的是rbac授权模式
    rbac,基于角色的权限管理,谁扮演什么角色,被允许做什么事情。


    shiro 授权流程


    shiro 授权方式

    1、编程式

    通过写if/else授权代码块完成

    Subject subject = SecurityUtils.getSubject();
    if(subject.hasRole("admin")) {
        // 有权限
    } else {
        // 无权限
    }

    2、注解式

    通过在执行的java方法上放置相应的注解完成

    如果主体里没有admin角色,不能进入方法
    @RequiresRoles("admin")
    public void hello() {
        // 有权限
    }

    3、JSP标签式

    <shiro:hasRole name="admin">
        <!-- 有权限,这个按钮显示 -->
    </shiro:hasRole>

    shiro 授权流程分析

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

  • 相关阅读:
    pop动画
    CoreData的用法
    高德地图详细使用方法
    GDataXML配置过程
    图片懒加载(仿SDWebImage)
    GCD创建单例
    多线程-多线程基础
    Zookeeper-集群与单机实践
    oracle-union all与order by联合使用
    分布式和集中式架构
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/9879083.html
Copyright © 2020-2023  润新知