`
徜徉の小溪
  • 浏览: 448359 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shiro权限标识符的用法

阅读更多

简单使用

例如我们定义新增用户权限的字符串为:createUser,为role1添加创建用户的权限。
ini配置
  1. role1=createUser
我们可以通过以下方式验证权限
  1. subject.isPermitted("createUser");

多层次字符串表示权限

上边的简单的字符串形式,需要每个功能都定义一个字符串,不方便管理。shiro提供了多层次的权限组成。
创建用户的权限我们可以这样配置
 
某个实例单个权限
  1. role1=user:create

某个资源多个权限

多个权限逗号分隔
  1. role1=user:create,user:delete
程序中验证
  1. subject().checkPermissions("user:create","user:delete");
验证当前用户是否具有,用户的新增和删除的权限。
简写
  1. role1=user:create,delete
程序中验证
  1. subject().checkPermissions("user:create,delete");

某个资源所有权限

  1. role1=user:create,update,delete,view
简写
  1. role1=user:*
验证
  1. subject().checkPermissions("user:*");
 
多个资源某个权限
 
  1. role1=*:view
这个表达式代表的就是用户1拥有所有资源的查看的权限,不单单包括用户查看,还包括其他的,例如定单的查看等等。
验证
  1. subject().checkPermissions("user:view");

实例级别的权限

通配符同时可以支持实例级别的权限设置。
有三部分组成,第一部分是域(domain), 第二部分是操作(action), 第三部分是实例(instance)
某个实例的某个权限
例如:
  1. role1=user:update:1
表达的是,角色1 拥有实例1的更新权限。
第一部分可以是多个层次分隔的,例如:
  1. role1=app1:system:user:update:1
验证:
  1. if(SecurityUtils.getSubject().isPermitted("user:update:1"){
  2. }
某个实例的多个权限
例如:
  1. role1=user:update,delete:1
表达的是,角色1 拥有实例1 的更新和删除权限。
 
某个实例的所有权限
  1. role1=user:*:1
表达的是角色1 拥有 实例1 的所有操作权限(例如,create,update,delete,view等);
 
所有实例的某个权限

 

  1. role1=user:update:*
上边的表达式表达的是角色1拥有所有实例的更新权限。
验证:
  1. subject().checkPermissions("user:update:1","user:update:2")

所有实例的所有权限

  1. role1=user:*:*
表达的是,角色1 拥有 所有实例的所有权限。
 

缺失部分

对于缺失部分,表示拥有所缺失部分的所有权限。
 
例如
  1. user:update
等价于
  1. user:update:*

例如

  1. user
等价于
  1. user:*:*
分享到:
评论

相关推荐

    shiro用户教程pdf

    #### 12.3 Shiro权限注解 Shiro提供了与Spring框架兼容的权限注解,可以方便地在控制器或服务层方法上声明所需的权限。 ### 第十三章:RememberMe #### 13.1 RememberMe配置 RememberMe功能允许用户在关闭浏览器...

    用于测试shiro中自定义Realm的测试代码

    当用户尝试登录时,Shiro会调用此方法,将用户名(或任何其他标识符)作为参数传入,你需要在这个方法里查询数据库或其他数据源,找到对应的用户信息,并返回一个`AuthenticationInfo`对象。 其次,如果需要进行...

    Shiro开发手册

    通过这个教程,您可以学习到Shiro的核心概念和API使用方法。 - **准备环境**: - Java 1.5及以上版本 - Maven 2.2.1及以上版本 - **创建命令行应用程序**: - 创建一个简单的命令行程序,运行后迅速退出。 - 了解...

    springboot+shiro+vue实现的简易教务系统.zip

    每个API应对应一个特定的HTTP方法(如GET、POST、PUT、DELETE),并且有明确的资源标识符。 7. **权限控制**:Shiro提供的权限控制功能可以实现角色和权限的分配,例如教师可以查看和修改学生的成绩,而学生只能...

    2021-2022年收藏的精品资料通用权限管理系统开发文档.docx

    综上所述,这份文档详细地介绍了通用权限管理系统的设计理念、实现方法及关键组件。通过对这些内容的学习和理解,开发者可以更好地掌握权限管理系统的构建技巧,从而开发出更加强大、灵活且安全的系统。同时,这也是...

    Shiro:SSM-Shiro 快速开发脚手架

    其实权限应该对应到资源(如菜单、URL、页面按钮、Java方法等)中,即应该将权限字符串存储到资源实体中,但是目前为了简单化,直接提取一个权限表,【综合示例】部分会使用完整的表结构。 用户实体包括:编号(id)、...

    基于spring boot的工资发放

    综上所述,这个项目是使用Spring Boot作为基础框架,通过HTML5和CSS构建用户界面,利用RESTful API设计后端服务,依赖JPA和Hibernate处理数据库操作,同时结合Spring Security的替代品Shiro进行权限管理和安全控制,...

    java本科毕业设计-基于RFID技术的国有资产管理系统源码-后台项目.zip

    后台项目通常会提供RESTful API接口,这些接口遵循HTTP协议,使用URI(统一资源标识符)定位资源,通过HTTP方法(GET、POST、PUT、DELETE等)进行操作。这种设计模式有利于前后端分离,提高系统的可扩展性和复用性...

    Java精品项目源码第106期嘟嘟二手书商城系统.zip

    9. **安全控制**:项目可能使用Spring Security或Apache Shiro等安全框架进行权限管理和用户认证,确保系统的安全性。 10. **单元测试与持续集成**:项目中可能包含JUnit测试用例,用于验证代码功能的正确性。同时...

    java网上oa办公系统原码Java源码

    8. **权限控制**:如Spring Security或Apache Shiro,用于实现用户认证和授权。 9. **工作流引擎**:如Activiti或Flowable,用于处理复杂的业务流程。 10. **日志管理**:如Log4j或SLF4J,用于记录系统运行过程中...

    cms-model

    使用Spring Security或者Apache Shiro来处理权限控制和认证,保护系统的安全性和用户的隐私。 8. **单元测试**: 开发过程中,JUnit和Mockito等工具可能会用于编写单元测试,确保代码质量。 9. **构建工具**: ...

Global site tag (gtag.js) - Google Analytics