权限框架 - 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-11-02 19:02:27

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

Java 权限框架 Shiro 实战二:与spring集成、filter机制

Shiro和Spring的集成,涉及到很多相关的配置,涉及到shiro的filer机制以及它拥有的各种默认filter,涉及到shiro的权限判断标签,权限注解,涉及到session管理等等方面. 1. 配置 首先需要在web.xml中专门负责接入shiro的filter: <!-- shiro 安全过滤器 --> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.

Java 权限框架 Shiro 实战(一)

Apache Shiro 官网地址:http://shiro.apache.org/ Apache Shiro is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and

权限框架 - 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

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

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

Java安全框架shiro

shiro是一个强大而且简单易用的Java安全框架,主要功能有认证(就是登陆验证),授权(就是权限管理),加密(就是密码加密),session管理.适用于各种大型或者小型企业应用.和Spring Security比较而言,确实更加简单而且灵活易懂. 1. shiro中的重要概念 要理解shiro,先要理解框架的几个概念: 1) Subject: 代表当前登陆或者访问的用户: 2)Principals:一般指用户名等,唯一表明Subject身份也就是当前用户身份的东西: 3)Credentials

java权限框架 SpringMVC_mybatis or hibernate+ ehcache二级缓存

A 代码生成器(开发利器);  B 阿里数据库连接池druid; C 安全权限框架shiro ; D ehcache 自定义二级缓存  (后续会加入Activiti5 工作流 ) 系统为主流的 springmvc+mybaits 3.2 版本 ,提供maven的pom.xml文件,另免费赠送hibernate版本一套(垮数据库) 1. 有 oracle .msyql.spring3.0.spring4.0  一共 4 套版本全部提供没有打jar没有加密的源代码(最下面截图2.1版本) 2. 支持

SpringMVC_mybatis or hibernate+ ehcache二级缓存java权限框架

A 代码生成器(开发利器);  B 阿里数据库连接池druid; C 安全权限框架shiro ; D ehcache 自定义二级缓存  (后续会加入Activiti5 工作流 ) 系统为主流的 springmvc+mybaits 3.2 版本 ,提供maven的pom.xml文件,另免费赠送hibernate版本一套(垮数据库) 1. 有 oracle .msyql.spring3.0.spring4.0  一共 4 套版本全部提供没有打jar没有加密的源代码(最下面截图2.1版本) 2. 支持

Shiro授权管理

一.授权 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission).角色(Role). 二.Shiro授权概念(RBAC) 1,Subject 主体,即访问应用的用户,在Shiro中使用Subject代表该用户.用户只有授权后才允许访问相应的资源. 2,Resource 在应用中用户可以访问的任何东西,比如访问JSP 页面.查看/编辑某些数据.访问某个业务方

(转)shiro权限框架详解05-shiro授权

http://blog.csdn.net/facekbook/article/details/54910606 本文介绍 授权流程 授权方式 授权测试 自定义授权realm 授权流程 开始构造SecurityManager环境subject.isPermitted()授权securityManager.isPermitted()执行授权Authorizer执行授权Realm根据身份获取资源权限信息结束 授权方式 Shiro支持三种方式的授权: 编程式:通过写if/else授权代码块完成. Sub