• Shiro 授权


    授权

    • 授权,也叫访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。
    • 主体(Subject):访问应用的用户,在 Shiro 中使用 Subject 代表该用户。用户只有授权后才允许访问相应的资源。
    • 资源(Resource):在应用中用户可以访问的 URL,比如访问 JSP 页面、查看/编辑某些数据、访问某个业务方法、打印文本等等都是资源。用户只要授权后才能访问。
    • 权限(Permission):安全策略中的原子授权单位,通过权限我们可以表示在应用中用户有没有操作某个资源的权力。即权限表示在应用中用户能不能访问某个资源,如:访问用户列表页面查看/新增/修改/删除用户数据(即很多时候都是CRUD(增查改删)式权限控
      制)等。权限代表了用户有没有操作某个资源的权利,即反映在某个资源上的操作允不允许。
    • Shiro 支持粗粒度权限(如用户模块的所有权限)和细粒度权限(操作某个用户的权限,即实例级别的)
    • 角色(Role):权限的集合,一般情况下会赋予用户角色而不是权限,即这样用户可以拥有一组权限,赋予权限时比较方便。典型的如:项目经理、技术总监、 CTO、开发工程师等都是角色,不同的角色拥有一组不同的权限

    Shiro授权流程

    img

    • 首先调用 Subject.isPermitted/hasRole 接口,其会委托给SecurityManager,而 SecurityManager 接着会委托给 Authorizer;
    • Authorizer是真正的授权者,如果调用如
      isPermitted(“user:view”),其首先会通过
    • PermissionResolver 把字符串转换成相应的 Permission 实例;
    • 在进行授权之前,其会调用相应的 Realm 获取 Subject 相应的角色/权限用于匹配传入的角色/权限;
    • Authorizer 会判断 Realm 的角色/权限是否和传入的匹配,如果有多个Realm,会委托给 ModularRealmAuthorizer 进行循环判断,如果匹配如 isPermitted/hasRole 会返回true,否则返回false表示授权失败
  • 相关阅读:
    centos 7 安装NVIDIA显卡驱动
    腾讯vCUDA(gpumanager)部署
    SmartIDE v0.1.17 已经发布 模版库远程模式和插件市场公测
    README.exe 是的,你看错是EXE
    vue 修改 elementui select组件样式坑
    沟通文化
    Cocoapods崩溃 苹果M1芯片笔记本
    如何使用Flutter包和插件
    解决Flutter中ThemeData.primaryColor在AppBar等组件中不生效
    Running with sound null safety flutter运行报错
  • 原文地址:https://www.cnblogs.com/chenjianfei/p/13194279.html
Copyright © 2020-2023  润新知