简单使用
例如我们定义新增用户权限的字符串为:createUser,为role1添加创建用户的权限。
ini配置
role1=createUser
我们可以通过以下方式验证权限
subject.isPermitted("createUser");
多层次字符串表示权限
上边的简单的字符串形式,需要每个功能都定义一个字符串,不方便管理。shiro提供了多层次的权限组成。
创建用户的权限我们可以这样配置
某个实例单个权限
role1=user:create
某个资源多个权限
多个权限逗号分隔
-
role1=user:create,
user:delete
程序中验证
subject().checkPermissions("user:create","user:delete");
验证当前用户是否具有,用户的新增和删除的权限。
简写
role1=user:create,delete
程序中验证
subject().checkPermissions("user:create,delete");
某个资源所有权限
role1=user:create,update,delete,view
简写
role1=user:*
验证
subject().checkPermissions("user:*");
多个资源某个权限
role1=*:view
这个表达式代表的就是用户1拥有所有资源的查看的权限,不单单包括用户查看,还包括其他的,例如定单的查看等等。
验证
subject().checkPermissions("user:view");
实例级别的权限
通配符同时可以支持实例级别的权限设置。
有三部分组成,第一部分是域(domain), 第二部分是操作(action), 第三部分是实例(instance)
某个实例的某个权限
例如:
role1=user:update:1
表达的是,角色1 拥有实例1的更新权限。
第一部分可以是多个层次分隔的,例如:
role1=app1:system:user:update:1
验证:
if(SecurityUtils.getSubject().isPermitted("user:update:1"){
}
某个实例的多个权限
例如:
role1=user:update,delete:1
表达的是,角色1 拥有实例1 的更新和删除权限。
某个实例的所有权限
role1=user:*:1
表达的是角色1 拥有 实例1 的所有操作权限(例如,create,update,delete,view等);
所有实例的某个权限
role1=user:update:*
上边的表达式表达的是角色1拥有所有实例的更新权限。
验证:
subject().checkPermissions("user:update:1","user:update:2")
所有实例的所有权限
role1=user:*:*
表达的是,角色1 拥有 所有实例的所有权限。
缺失部分
对于缺失部分,表示拥有所缺失部分的所有权限。
例如
user:update
等价于
user:update:*
例如
user
等价于
user:*:*
相关推荐
#### 12.3 Shiro权限注解 Shiro提供了与Spring框架兼容的权限注解,可以方便地在控制器或服务层方法上声明所需的权限。 ### 第十三章:RememberMe #### 13.1 RememberMe配置 RememberMe功能允许用户在关闭浏览器...
当用户尝试登录时,Shiro会调用此方法,将用户名(或任何其他标识符)作为参数传入,你需要在这个方法里查询数据库或其他数据源,找到对应的用户信息,并返回一个`AuthenticationInfo`对象。 其次,如果需要进行...
通过这个教程,您可以学习到Shiro的核心概念和API使用方法。 - **准备环境**: - Java 1.5及以上版本 - Maven 2.2.1及以上版本 - **创建命令行应用程序**: - 创建一个简单的命令行程序,运行后迅速退出。 - 了解...
每个API应对应一个特定的HTTP方法(如GET、POST、PUT、DELETE),并且有明确的资源标识符。 7. **权限控制**:Shiro提供的权限控制功能可以实现角色和权限的分配,例如教师可以查看和修改学生的成绩,而学生只能...
综上所述,这份文档详细地介绍了通用权限管理系统的设计理念、实现方法及关键组件。通过对这些内容的学习和理解,开发者可以更好地掌握权限管理系统的构建技巧,从而开发出更加强大、灵活且安全的系统。同时,这也是...
其实权限应该对应到资源(如菜单、URL、页面按钮、Java方法等)中,即应该将权限字符串存储到资源实体中,但是目前为了简单化,直接提取一个权限表,【综合示例】部分会使用完整的表结构。 用户实体包括:编号(id)、...
综上所述,这个项目是使用Spring Boot作为基础框架,通过HTML5和CSS构建用户界面,利用RESTful API设计后端服务,依赖JPA和Hibernate处理数据库操作,同时结合Spring Security的替代品Shiro进行权限管理和安全控制,...
后台项目通常会提供RESTful API接口,这些接口遵循HTTP协议,使用URI(统一资源标识符)定位资源,通过HTTP方法(GET、POST、PUT、DELETE等)进行操作。这种设计模式有利于前后端分离,提高系统的可扩展性和复用性...
9. **安全控制**:项目可能使用Spring Security或Apache Shiro等安全框架进行权限管理和用户认证,确保系统的安全性。 10. **单元测试与持续集成**:项目中可能包含JUnit测试用例,用于验证代码功能的正确性。同时...
8. **权限控制**:如Spring Security或Apache Shiro,用于实现用户认证和授权。 9. **工作流引擎**:如Activiti或Flowable,用于处理复杂的业务流程。 10. **日志管理**:如Log4j或SLF4J,用于记录系统运行过程中...
使用Spring Security或者Apache Shiro来处理权限控制和认证,保护系统的安全性和用户的隐私。 8. **单元测试**: 开发过程中,JUnit和Mockito等工具可能会用于编写单元测试,确保代码质量。 9. **构建工具**: ...