博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shiro入门 - 通过自定义Realm连数数据库进行授权
阅读量:5145 次
发布时间:2019-06-13

本文共 1434 字,大约阅读时间需要 4 分钟。

shiro-realm.ini

[main]#自定义RealmmyRealm=test.shiro.MyRealm#将myRealm设置到securityManager,相当于Spring中的注入securityManager.realms=$myRealm

MyRealm.java

/** * 授权 * @param principals * @return */@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {    String account =  (String) principals.getPrimaryPrincipal();    //所有权限实体    List
permissions = iPermissionsService.selectPermission(account); //url集合 List
permissionUrls = new ArrayList<>(); for(Permission permission : permissions){ permissionUrls.add(permission.getUrl); } SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); info.addStringPermissions(permissionUrls); return info;}

测试代码

/** * 通过自定义Realm查询数据库读取权限 */@Testpublic void testMyRealm2(){    Factory
factory = new IniSecurityManagerFactory("classpath:shiro/shiro-realm.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("admin", "111111"); subject.login(token); System.out.println("认证状态:"+subject.isAuthenticated()); System.out.println(subject.isPermitted("user:create")); System.out.println(subject.isPermittedAll("user:create", "items:add"));}

测试结果

认证状态:truetruetrue

转载于:https://www.cnblogs.com/bobi1234/p/7280174.html

你可能感兴趣的文章
列表 -- 增删改查(切片)
查看>>
【模板】堆排序
查看>>
DNS练习之正向解析
查看>>
[Leetcode][JAVA] LRU Cache
查看>>
硬件UDP读数AsynUdpClient
查看>>
本周内容
查看>>
sublime dockerfile 语法高亮
查看>>
InputStream、InputStreamReader和Reader的关系
查看>>
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
一种简单的数据库性能测试方法
查看>>
如何给JavaScript文件传递参数
查看>>
Hadoop HBase概念学习系列之物理视图(又名为物理模型)(九)
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
ExtJS 4.2 业务开发(一)主页搭建
查看>>
webpack Import 动态文件
查看>>