导读

  • 相关链接
  • ABAC初体验
    • 添加依赖
    • 实现`AbacInterface`接口
      • 自动注入
      • 手动注入
    • 初始化ABAC鉴权规则
    • 注入拦截器
    • 创建`Controller`测试一下

LoopAuth 发布已经有些时日了,在 LoopAuth 1.X版本中,一直使用Rbac的鉴权方式。

LoopAuth 这个项目在创建初期,就已经思考加入ABAC的鉴权模式。

9月份摆烂一个月后,LoopAuth 2.X版本现在已发布: 重构完成,加入ABAC鉴权模式,将原有核心模块拆分为SessionRBACABAC三块。

相关链接

  • Gitee
  • GitHub
  • 官方文档

ABAC初体验

  • 示例项目

添加依赖

  • ${version}请查看版本历史,请使用最新正式版,且版本与其余拓展最好保持一致
<!-- LoopAuth的Springboot插件 -->
<dependency><groupId>com.sobercoding</groupId><artifactId>LoopAuth-spring-boot-starter</artifactId><version>${version}</version>
</dependency>

实现AbacInterface接口

  • LoopAuthHttpMode为请求类型的枚举,包括GET、PUT、POST或ALL等等所有常见的请求类型
public class AbacInterFaceImpl implements AbacInterface {/***  获取一个或多个路由/权限代码所属的 规则* @param route 路由* @param loopAuthHttpMode 请求方式* @return 去重后的集合*/@Overridepublic Set<Policy> getPolicySet(String route, LoopAuthHttpMode loopAuthHttpMode) {// 这里只做演示,自行编写的时候,请根据自己存储abac规则的方式查询获取Set<Policy> set = new HashSet<>();// 根据路由地址及请求方式查询 插入if (route.equals("/test/abac") && loopAuthHttpMode.equals(LoopAuthHttpMode.GET)){set.add(new Policy()// 规则名称.setName("test")// 规则中的属性名称 及 属性值 用于后续进行 规则匹配校验.setProperty("loginId", "2"));}return set;}
}

自动注入

  • AbacInterface的实现类上加上@Component注解即可
@Component
public class AbacInterFaceImpl implements AbacInterface {...
}

手动注入

  • 保证项目启动时执行下面语句即可
AbacStrategy.setAbacInterface(new PermissionInterfaceImpl());

初始化ABAC鉴权规则

  • 需要保证项目启动时 执行以下代码
  • 以下代码以匹配loginId为例
  • 请根据自己需求更改
AbacStrategy.abacPoAndSuMap = new AbacPolicyFunBuilder()// 自定义登录id校验的鉴权规则.setPolicyFun("loginId",// 创建规则校验及获取当前值的方式new AbacPoAndSu()// 创建校验方式  value为当前值即setSupplierMap提供的值// rule为规则的值即 Policy setProperty 的值.setMaFunction((value, rule) -> {// 当前用户id需要与规则匹配才可访问  否则 抛出异常if (!value.equals(rule)){throw new LoopAuthPermissionException(LoopAuthExceptionEnum.NO_PERMISSION);}})// 获得value方式.setSupplierMap(() -> "2")).build();

注入拦截器

@Component
public class LoopAuthMvcConfigure implements WebMvcConfigurer {/*** 注册LoopAuth 的拦截器,打开注解式鉴权功能*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {// abac拦截器registry.addInterceptor(new InterceptorBuilder().Abac().builder()).addPathPatterns("/**");}
}

创建Controller测试一下

  • 可以更改setSupplierMap()中的返回值、或请求类型理解
    @GetMapping("/test/abac")public String abac1(){return "检测成功";}

LoopAuth 2.X版本发布——这可能是你第一次使用ABAC鉴权相关推荐

  1. bootstrap 新闻列表_kuapingUI 2.2 版本发布,跨屏 UI-bootstrap 大组件 UI 框架

    kuapingUI 2.2 版本发布,增加了一个比较实用的工具栏web组件,是由分享按钮组 + 联系按钮组构成,分享按钮组包含了 QQ空间.朋友圈.QQ.微信.微博等分享:联系按钮组包含了 微信.QQ ...

  2. 多节点CDN缓存加速系统wdcdn2.4版本发布(20111213)

    多节点CDN缓存加速系统wdcdn2.4版本发布(20111213) Wdcdn是一套基于Linux+apache+squid架构开发的CDN缓存加速系统及管理系统 可帮助大中小站长或大中小企业低成本 ...

  3. 使用自动化插件release来管理maven项目的版本发布

    在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本.对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问 ...

  4. weblogic创建域后启动不了_WebLogic的Azure虚拟机主要版本发布

    作者:Reza Rahman 我们很高兴地宣布,将发布在Azure Linux虚拟机上运行Oracle WebLogic Server(WLS)的解决方案的主要版本.该版本是与WebLogic团队共同 ...

  5. Istio 1.1 版本发布,性能和可用性提升

    3月20日,Istio 1.1版本发布,距离Istio 1.0版本发布已经过去了7个月.Istio 1.0版本发布的时候,一些主要新功能包括: 将多个 Kubernetes 集群添加到单个网格中,并启 ...

  6. 版本发布后软件测试人员要做的工作

    我在这里讨论的方法主要是针对互联网企业的测试,可能对传统企业的测试来说会有点不同,但是大体上是适用所有公司的测试情况的. 版本发布后大部分测试人员的意识里面都会认为该要好好休息一下了,放几天羊,做做其 ...

  7. Git 2.18版本发布:支持Git协议v2,提升性能

    2019独角兽企业重金招聘Python工程师标准>>> Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要 ...

  8. 《Verilog HDL那些事儿》PDF 3.0版本发布

      <Verilog HDL那些事儿>1.0版本发布四章内容,后续将后面的两章内容加入,最近比较忙,希望大家体谅! 目录: 书语        9 第一章        前言        ...

  9. 2020年Spring Cloud最后一个大版本发布!

    2020年12月22日,Spring Cloud 2020.0 正式发布GA版本! 版本说明 每次Spring Cloud的大版本发布,我们都要先弄清楚,它对应的Spring Boot版本是哪个! 该 ...

最新文章

  1. Logstash(一)的入门与运行机制
  2. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...
  3. 关于Angular中使用HTML的select和option标签的一些问题
  4. html 访问 php 变量
  5. 双因素方差分析_多因素方差分析
  6. ORDER BY NEWID()【原创】
  7. 展示面-关于wireshark抓包总结
  8. 标记已读如何实现Java_javamail标记gmail消息为已读
  9. js数组去重的4个方法
  10. Ajax案例-基于XML,以POST方式,完成省份-城市二级下拉联动
  11. 使用Angular Router导航基础
  12. @Controller
  13. 创建一个WPF+EF应用程序
  14. csdn中让图片居中
  15. QTP 10.0 破解版下载安装超详细教程
  16. 【果壳笔记】生物信息学——陈润生老师部分
  17. Speedoffice(word)如何绘制流程图
  18. 安卓Toast显示流程分析
  19. 如何看待社会的阴暗面
  20. Mac 更新系统后无法使用git

热门文章

  1. 计算机全息图的制作与在线,计算全息图基本理论与制作.doc
  2. 95后程序员连续15天加班到凌晨2点在餐厅泪崩!看到955不加班的公司名单,酸哭了......
  3. 能拯救你的,只有你自己
  4. iOS开发教程之OC语言-欧阳坚-专题视频课程
  5. fastreport 报表hp打印机提示缺纸,实际有纸,需要按打印机确认键才能打印
  6. 由于计算机技术的发展才产生了信息技术,2014年信息技术学业水平考试复习题...
  7. IP营销赋能中国玩具—成都扬帆际海教育咨询有限公司
  8. 无线充电宝口碑最好的牌子推荐,口碑好的无线充电宝盘点
  9. shell中通过ftp批量上传文件
  10. 图像亮度、对比度 算法--cg