欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

权限框架 - shiro 授权demo

发布时间:2025/3/21 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 权限框架 - 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进行动态认证授权

总结

以上是生活随笔为你收集整理的权限框架 - shiro 授权demo的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。