LoopAuth版本已经处理了一段时间,在LoopAuth1.X版本中,已经使用了Rbac身份验证方法。LoopAuth在创建之初就考虑过加入ABAC认证模式。9月失败一个月后,LoopAuth2.X版本发布:重构完成,新增ABAC认证模式,将原有核心模块拆分为Session、RBAC、ABAC三部分。相关链接GiteeGitHub官方文档ABAC初体验示例项目添加依赖${version}请查看历史版本,请使用官方最新版本,版本要与其他扩展保持一致com.sobercodingLoopAuth-spring-boot-starter${version}实现AbacInterface接口LoopAuthHttpMode作为请求类型的枚举,包括所有常见的请求类型如GET,PUT,POST或ALL等。requestmode*@returndeduplicatedset*/@OverridepublicSetgetPolicySet(Stringroute,LoopAuthHttpModeloopAuthHttpMode){//这只是为了演示。自己写的时候请根据自己存储abac规则的方式查询获取Setset=newHashSet<>();//根据路由地址和请求方法查询插入if(route.equals("/test/abac")&&loopAuthHttpMode.equals(LoopAuthHttpMode.GET)){set.add(newPolicy()//规则名称.setName("test")//规则中的属性名和属性值用于后续规则匹配验证。setProperty("loginId","2"));}返回集合;}}自动注入到AbacInterface的实现中只需要在类上加上@Component注解@ComponentpublicclassAbacInterFaceImplimplementsAbacInterface{...}手动注入保证项目启动时可以执行如下语句AbacStrategy.setAbacInterface(newPermissionInterfaceImpl());ABAC认证规则的初始化需要保证项目启动以下代码以匹配到loginId时执行以下代码为例。PleasechangeAbacStrategy.abacPoAndSuMap=newAbacPolicyFunBuilder()//自定义登录id验证的验证规则。setPolicyFun("loginId",//创建规则验证和获取当前值的方式newAbacPoAndSu()//创建验证方法value为当前值,即setSupplierMap提供的值//rule为的值rule,即Policy的值setProperty.setMaFunction((value,rule)->{//当前用户id需要匹配rule才可以访问,否则会抛出异常if(!value.等于(规则)){抛出新的LoopAuthPermissionException(LoopAuthExceptionEnum.NO_PERMISSION);}})//获取值的方法.setSupplierMap(()->"2")).build();注入拦截器@ComponentpublicclassLoopAuthMvcConfigureimplementsWebMvcConfigurer{/***注册LoopAuth拦截器,开启注解鉴权功能*/@OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){//abac拦截器registry.addInterceptor(newInterceptorBuilder().Abac().builder()).addPathPatterns("/**");}}创建一个控制器来测试它。可以更改setSupplierMap()中的返回值,或者请求类型理解@GetMapping("/test/abac")publicStringabac1(){return"检测成功";}