首页 > 其他分享 >shiro-realm授权过虑器

shiro-realm授权过虑器

时间:2023-02-08 11:31:41浏览次数:46  
标签:realm 过虑 item 授权 query 权限 shiro



使用PermissionsAuthorizationFilter


在applicationContext-shiro.xml中配置url所对应的权限


测试流程:
1、在applicationContext-shiro.xml中配置filter规则
<!--商品查询需要商品查询权限 -->
/items/queryItems.action = perms[item:query]
2、用户在认证通过后,请求/items/queryItems.action
3、被PermissionsAuthorizationFilter拦截,发现需要“item:query”权限
4、PermissionsAuthorizationFilter调用realm中的doGetAuthorizationInfo获取数据库中正确的权限
5、PermissionsAuthorizationFilter对item:query 和从realm中获取权限进行对比,如果“item:query”在realm返回的权限列表中,授权通过



在realm中写授权的方法


// 用于授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(
PrincipalCollection principals) {

//从 principals获取主身份信息
//将getPrimaryPrincipal方法返回值转为真实身份类型(在上边的doGetAuthenticationInfo认证通过填充到SimpleAuthenticationInfo中身份类型),
String userCode = (String)principals.getPrimaryPrincipal();

//根据身份信息获取权限的信息
//模拟从数据库中取得该用户的权限信息
List<String> permissions = new ArrayList<String>();
/**
* 用户的查询权限,这个权限拥有了 这个权限,当该用户访问
* /items/queryItem.action = perms[item:query]
* 时就不会被拦截住
* 就是说这个用户拥有该资源的访问权限
*/
permissions.add("item:query");

//查询权限数据,返回授权信息
SimpleAuthorizationInfo sAuthorizationInfo = new SimpleAuthorizationInfo();
//将用户的权限信息填充到sAuthorizationInfo中返回
sAuthorizationInfo.addStringPermissions(permissions);

return sAuthorizationInfo;
}




如果授权失败,跳转到refuse.jsp,需要在spring容器中配置:已经在applicationContext-shiro.xml中配置了

<!-- 这是认证之后访问没有权限的资源,会统一跳转到这个jsp -->
<property name="unauthorizedUrl" value="/refuse.jsp"></property>



但是这种授权的方式存在两个问题

1、在applicationContext-shiro.xml中配置过虑器链接,需要将全部的url和权限对应起来进行配置,比较发麻不方便使用。

2、每次授权都需要调用realm查询数据库,对于系统性能有很大影响,可以通过shiro缓存来解决


可以通过下一章的注解和标签来解决这些问题












标签:realm,过虑,item,授权,query,权限,shiro
From: https://blog.51cto.com/u_12182769/6043814

相关文章

  • (狂神)shiro
    Ref:https://www.kuangstudy.com/1、Shiro简介Shiro是什么?ApacheShiro是Java的一个安全(权限)框架。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaS......
  • SpringBoot框架下shiro与jwt的结合的用户登录
    写了一次使用shiro和jwt的用户登录(没有涉及到用户权限的控制),下面进行很简单的技术总结之前使用的是Redis中保存用户信息,使用uuid-用户信息的键值对来判断用户......
  • Shiro配置类
    importorg.apache.shiro.authc.credential.HashedCredentialsMatcher;importorg.apache.shiro.mgt.SecurityManager;importorg.apache.shiro.spring.web.ShiroFilter......
  • Shiro+SpringBoot+Mybatis+Redis实现权限系统
     这个项目涉及到的技术:SpringBoot,Thymeleaf,MyBaits,Redis,Shiro,JavaMail,EasyUI,Excel导入、导出 下面展示一下界面: 主页:  用户列表:  角色权限授予: 资源列表:  用户角......
  • Ubuntu20.04通过realmd+sssd实现AD账号登陆
    Ubuntu20.04通过realmd+sssd实现AD账号登陆:apt-getinstallrealmdsssdsssd-toolsrealmdiscover​​aa.ming.com​​(aa.ming.com为DC)sssd模式(会自动安装sssd、sssd-......
  • shiro登录认证过程讲解
    先粘出登录的代码​@RequestMapping(value="/submitLogin",method=RequestMethod.POST)@ResponseBodypublicMap<String,Object>submitLogin(Stringusername,String......
  • springboot-shiro
    1.依赖<!--shiro--><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><versio......
  • Shiro-721反序列化漏洞
    漏洞名称Shiro-721(ApacheShiroPaddingOracleAttack)反序列化利用条件ApacheShiro<1.4.2漏洞原理ApacheShirocookie中使用AES-128-CBC模式加密的rememberMe字......
  • Shiro
    1、​​权限框架之Shiro详解(非原创)​​2、​​跟我学Shiro​​3、​​Shiro安全框架入门篇(登录验证实例详解与源码)​​4、​​安全认证框架Shiro(一)-ini配置文件​​5......
  • shiro单点登录和单次登录
    什么是单点登录,什么是单次登录单点登录,集群环境中,在一台服务器登录了,相当于整个集群环境都登录了,可以分成有状态和无状态两种方式单次登录,既一个账号只能登录一次,......