权限框架 - shiro 授权demo

之前说了权限认证,其实也就是登录验证身份

这次来说说shiro的授权

shiro可以针对角色授权,或者访问资源授权

两者都行,但是在如今的复杂系统中,当然使用后者,如果你是小系统或者私活的话,前者即可,甚至可以不用,我懂的

好吧,上代码:

首先新建一个ini,登陆信息以及权限配置好

 1 #用户
 2 [users]
 3 #eric 用户nathan的密码是123456,拥有boss以及hr两个权限
 4 eric=123456,boss,hr
 5 merry=123456,hr
 6
 7 #权限
 8 [roles]
 9 #角色对用资源user来说拥有create以及update权限
10 boss=user:create,user:update
11 #角色对用资源user来说拥有create以及delete权限
12 hr=user:create,user:delete
13 #角色对用资源user来说拥有create权限
14 tl=user:create

 

 

以下代码先登陆,后授权,分为角色以及资源

 1 @Test
 2     public void testAuthorization() {
 3
 4         // 创建SecurityManager工厂
 5         Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro-permission.ini");
 6         // 创建SecurityManager
 7         SecurityManager securityManager = factory.getInstance();
 8         // 将SecurityManager设置到系统运行环境,和spring后将SecurityManager配置spring容器中,一般单例管理
 9         SecurityUtils.setSecurityManager(securityManager);
10         // 创建subject
11         Subject subject = SecurityUtils.getSubject();
12         // 创建token令牌
13         UsernamePasswordToken token = new UsernamePasswordToken("eric", "123456");
14         // 执行认证
15         try {
16             subject.login(token);
17         } catch (AuthenticationException e) {
18             e.printStackTrace();
19         }
20         System.out.println("认证状态:" + subject.isAuthenticated());
21         // 认证通过后执行授权
22
23         // 基于角色的授权
24         // hasRole传入角色标识
25         boolean ishasRole = subject.hasRole("hr");
26         System.out.println("单个角色判断" + ishasRole);
27         // hasAllRoles是否拥有多个角色
28         boolean hasAllRoles = subject.hasAllRoles(Arrays.asList("boss", "hr", "tl"));
29         System.out.println("多个角色判断" + hasAllRoles);
30
31         // 使用check方法进行授权,如果授权不通过会抛出异常
32         // subject.checkRole("employee");
33
34         // 基于资源的授权
35         // isPermitted传入权限标识符
36         boolean isPermitted = subject.isPermitted("user:create:1");
37         System.out.println("单个权限判断" + isPermitted);
38
39         boolean isPermittedAll = subject.isPermittedAll("user:create:1",
40                 "user:delete");
41         System.out.println("多个权限判断" + isPermittedAll);
42
43         // 使用check方法进行授权,如果授权不通过会抛出异常
44         subject.checkPermission("items:create:1");
45
46     }

 

这些都是简单的配置

过后会讲讲如何配合springmvc spring 以及mybatis进行动态认证授权

时间: 2024-12-28 20:50:23

权限框架 - shiro 授权demo的相关文章

权限框架 - shiro 简单入门实例

前面的帖子简单的介绍了基本的权限控制,可以说任何一个后台管理系统都是需要权限的 今天开始咱们来讲讲Shiro 首先引入基本的jar包 1 <!-- shiro --> 2 <dependency> 3 <groupId>org.apache.shiro</groupId> 4 <artifactId>shiro-core</artifactId> 5 </dependency> 6 <dependency> 7

权限框架 - shiro 自定义realm

上篇文章中是使用的默认realm来实现的简单登录,这仅仅只是个demo,真正项目中使用肯定是需要连接数据库的 首先创建自定义realm文件,如下: 在shiro中注入自定义realm的完全限定类名: 1 [main] 2 # your custom realm path 3 fooRealm=com.lee.shiro.realm.FooRealm 4 # DI such as spring DI 5 securityManager.realms=$fooRealm 自定义realm认证: 1

Apache Shiro功能强大并且容易集成的开源权限框架

关于 Shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述,本文重点介绍 Shiro 在 http://www.aliyun.com/zixun/aggregation/1.html">Web Application 中如何实现验证码认证以及如何实现单点登录. 用户权限模型 在揭开 Shiro 面纱之前,我们需要认知用户权限模型.本文所提到用户权限模型,指的是用来表达用户信息及用户权限信息的数据模型.即能证明"你是谁?"."你能访问多少受保护资源

Apache Shiro 使用手册(三)Shiro 授权

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等.  一.授权的三要素  授权有着三个核心元素:权限.角色和用户.  权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create,read,update,delete),但是

Apache Shiro 关于Shiro 授权

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限.  如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等.  一.授权的三要素  授权有着三个核心元素:权限.角色和用户.  权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create,read,update,delete),但

shiro 授权

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等. 一.授权的三要素 授权有着三个核心元素:权限.角色和用户. 权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create,read,update,delete),但是任何操

remembered-shiro权限框架中如何获取Remembered中的用户信息

问题描述 shiro权限框架中如何获取Remembered中的用户信息 如题,想做个自动登录功能,但是如何获取Remembered的用户信息如Subject.能不能说的详细一些,有代码说明就更好了

Apache Shiro 使用手册(三) Shiro授权_Linux

如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等. 一.授权的三要素 授权有着三个核心元素:权限.角色和用户. 权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create,read,update,delete),但是任何操作建立在特定的资源上才是有意义的.因此,权限声明的根本思想就是建立在资源

Django之路 如何开发通用且万能的的权限框架组件

业务场景分析 假设我们在开发一个培训机构的客户关系管理系统,系统分客户管理.学员管理.教学管理3个大模块,每个模块大体功能如下: 客户管理 销售人员可以录入客户信息,对客户进行跟踪,为客户办理报名手续 销售人员可以修改自己录入的客户信息 客户信息不能删除 销售主管可以查看销售报表 学员管理 学员可以在线报名 学员可以查看自己的报名合同.学习有效期 学员可以在线提交作业.查看自己的成绩 教学管理 管理员可以创建新课程.班级 讲师可以创建上课纪录 讲师可以在线点名.批作业 从上面的需求中,我们至少提