IT学习站-137zw.com

more +资源更新Forums

more +随机图赏Gallery

价值5980元高端JAVA架构课程 精英培训计划视频教程 java架构价值5980元高端JAVA架构课程 精英培训计划视频教程 java架构
价值3600元的中文网第八期php cms 视频 完整版视频课程价值3600元的中文网第八期php cms 视频 完整版视频课程
10节课让你成为滚床单高手  强烈推荐 屌丝的福音10节课让你成为滚床单高手 强烈推荐 屌丝的福音
最新流出的传智博学谷黑马python5.0课程最新流出的传智博学谷黑马python5.0课程
价值19000元的小码哥大神班IOS五期不加密版本教程价值19000元的小码哥大神班IOS五期不加密版本教程
从网络基础概念到校园网整体规划组建系列视频教程(共40集)从网络基础概念到校园网整体规划组建系列视频教程(共40集)

Shiro实现用户对动态资源细粒度的权限校验

Shiro实现用户对动态资源细粒度的权限校验

[复制链接]
落败的青春阳落s | 显示全部楼层 发表于: 2019-11-14 09:40:00
落败的青春阳落s 发表于: 2019-11-14 09:40:00 | 显示全部楼层 |阅读模式
查看: 58|回复: 0

你还没有注册,无法下载本站所有资源,请立即注册!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前言

在实际系统应用中,普遍存在这样的一种业务场景,需要实现用户对要访问的资源进行动态权限校验。
譬如,在某平台的商家系统中,存在商家、品牌、商品等业务资源。它们之间的关系为:一个商家可以拥有多个品牌,一个品牌下可以拥有多个商品。
Shiro实现用户对动态资源细粒度的权限校验  技术博客 1384701-20190907194840529-1782095749

一个商家用户可以拥有多个账户,每个账户拥有不同级别的权限。
例如,小王负责商家A下的所有资源的运营工作,小张负责品牌A和品牌A下所有商品的运营工作。而小李负责品牌B
Shiro实现用户对动态资源细粒度的权限校验  技术博客 1384701-20190907201733392-883952038

Shiro本身提供了RequiresAuthentication、RequiresPermissions和RequiresRoles等注解用于实现静态权限认证,
但不适合对于这种细粒度的动态资源的权限认证校验。基于以上描述,这篇文章就是补充了一种对细粒度动态资源的访问权限校验。
大概的设计思路


  • 1.新增一个自定义注解Permitable,用于将资源转换为shiro的权限表示字符串(支持SpEL表达式)
  • 2.新增加一个AOP切面,用于将自定义注解标注的方法和Shiro权限校验关联起来
  • 3.校验当前用户是否拥有足够的权限去访问受保护的资源
编码实现


  • 1、新建PermissionResolver接口

  • 2、新增业务资源实体类,并实现PermissionResolver接口,此处以商品资源为例,例如新建Product.java

  • 3、新增自定义注解Permitable

  • 4、新增权限校验切面
[code]import lombok.extern.slf4j.Slf4j;import org.aopalliance.intercept.MethodInterceptor;import org.apache.commons.lang3.StringUtils;import org.apache.shiro.SecurityUtils;import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor;import org.springframework.context.expression.MethodBasedEvaluationContext;import org.springframework.core.DefaultParameterNameDiscoverer;import org.springframework.core.annotation.AnnotationUtils;import org.springframework.expression.EvaluationContext;import org.springframework.expression.spel.standard.SpelExpressionParser;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import java.util.List;/** * 静态自定义权限认证切面 */@Slf4jpublic class PermitAdvisor extends StaticMethodMatcherPointcutAdvisor {    private static final Class
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-7-12 01:17 , Processed in 0.176988 second(s), 33 queries .

快速回复 返回顶部 返回列表