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

这次来说说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进行动态认证授权

权限框架 - shiro 授权demo相关推荐

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

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

  2. Shiro 授权(权限)

    文章目录 一.授权(权限) 1.1 什么是权限 1.2 权限框架 二.身份验证Subject(配置文件版) 2.1 导入依赖 2.2 shiro.ini 2.3 权限验证(登录) 2.4 身份认证流程 ...

  3. android 框架_AOP编程_Android优雅权限框架(2)Demo完全解析

    享学课堂特邀作者:老顾 转载请声明出处! 上篇文章:AOP编程_Android优雅权限框架(1)概念基础 5. AOP优雅权限框架详解 Demo地址: https://github.com/18598 ...

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

    http://blog.csdn.net/facekbook/article/details/54910606 本文介绍 授权流程 授权方式 授权测试 自定义授权realm 授权流程 开始构造Secu ...

  5. SSM整合shiro权限框架

    一.SSM整合shiro框架 1.步骤 1.添加shiro框架需要的jar包,包括shiro-core.shiro-web.shiro-spring的关系依赖 <!-- shiro jar包依赖 ...

  6. 基于vue(element ui) + ssm + shiro 的权限框架

    zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...

  7. springboot 2.x 整合 shiro 权限框架

    序 在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务.比如,普通用户只能浏览:会员可以浏览和评论:超级会员可以浏览.评论和看视频课等:实际应用场景很多.毫不夸张 ...

  8. SpringBoot2.x 整合 shiro 权限框架

    每天早上七点三十,准时推送干货 在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务.比如,普通用户只能浏览:会员可以浏览和评论:超级会员可以浏览.评论和看视频课等 ...

  9. JAVAWEB开发之权限管理(一)——权限管理详解(权限管理原理以及方案)、不使用权限框架的原始授权方式详解

    知识清单 1.了解基于资源的权限管理方式 2. 掌握权限数据模型 3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理) 4. shiro实现用户认证 5. shiro实现用户 ...

最新文章

  1. 如何扩展Linux的ip_conntrack
  2. Spring Bean的作用域及生命周期
  3. wxWidgets:显示 wxDebugReport 和相关类的最小示例
  4. 我的2020年度总结
  5. LeetCode 145. 二叉树的后序遍历(后序遍历总结)
  6. PX4代码解析(1)
  7. 12505 java_Java jdbc Oracle error: ORA 12505
  8. 转 十道海量数据处理面试题与十个方法大总结
  9. appscan 9.0.3.10 版本下载
  10. 手机WAPI功能检测常见问题分析(系列连载二):证书鉴别功能
  11. html左侧浮动广告代码,如何制作浮动广告 JavaScript制作浮动广告代码
  12. EKL构造点和线的基本用法
  13. 九度oj-1158-买房子
  14. 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务
  15. 44岁万达女高管跳楼:摧毁一个中年人有多容易!
  16. python调用程序call_Python调用外部程序——os.system()和subprocess.call()
  17. 文本分词并统计出现次数最高的几个词Python
  18. 硬核FutureTask解析
  19. 数字图像处理第三章<一>、灰度变换
  20. 计算机从一级到四级要学多久,从一级到四级 全国计算机等级考试全攻略

热门文章

  1. mysql密码错误 mac_MAC下MYSQL5.7.17连接不上提示密码错解决步骤
  2. php每天扒取当天新闻_php 抓取新浪新闻的程序代码
  3. 黑星什么意思_星月菩提黑星海南料什么意思
  4. oracle脱机备份文件拒绝访问,如何解决备份文件夹拒绝访问问题
  5. 软件测试技术与项目实训pdf,软件测试技术任务驱动式教程pdf
  6. java做台球时老是闪屏_电脑老是闪屏的原因和解决办法
  7. 插入最快mysql8.0_MySQL8.0大表秒加字段,是真的吗?
  8. Mybatis框架的操作步骤和细节处理
  9. MySQL中有关TIMESTAMP和DATETIME的总结
  10. pinpoint 安装部署