轻量级的权限校验-SimpleAuth

本文介绍了SimpleAuth,一个用于SpringBoot项目的轻量级权限验证插件,可通过Maven添加依赖。文章详细讲解了如何通过HttpServletRequest对象验证参数以及基于角色的权限校验方法。
摘要由CSDN通过智能技术生成

特性

这是一款基于SpringBoot的轻量化的权限校验插件。适用于渐进式或轻量级的项目。
项目github地址

用法

当你想要控制Controller中所有的方法或其中一个,可以添加@IsAuthor注解在方法或Controller类上。

第一步:添加maven依赖

<dependency>
    <groupId>io.github.liuye744</groupId>
    <artifactId>simpleAuth-spring-boot-starter</artifactId>
    <version>0.2.1.RELEASE</version>
</dependency>

第二步:验证权限

方式一、通过HttpServlertRequest对象验证参数

创建一个类继承AutoAuthHandler,并重写IsAuthor方法

//验证请求参数中是否携带key为114514的参数. 
//返回true则表示验证成功,返回false表示验证失败将会抛出PermissionsException
//当然你也可以进行更复杂的操作
@Component
public class KeyAutoAuthHandler extends AutoAuthHandler {
   @Override
   public boolean isAuthor(HttpServletRequest request, String permission) {
       final String key = request.getParameter("key");
       if ("114514".equals(key)){
           return true;
       }
       return false;
   }
}

然后将@IsAuthor 注释添加到 Controller 或其中的方法。然后,将检查 Controller 中的所有请求或带注释的请求是否具有相关权限。

@Controller
@IsAuthor(authentication = KeyAutoAuthHandler.class)
public class MyController {
}

注意: 如果你有多个 AutoAuthHandler,你可以像这样写注释@IsAuth (authentication = { KeyAutoAuthHandler1.class,KeyAutoAuthHandler2.class })。authentication参数也可以写 Bean 名称。这些类将按顺序执行权限检查。或者创建 继承AutoAuthHandlerChain 的类,并将所有 Handler 添加到该类中。

@Component
public class MyHandlerChain extends AutoAuthHandlerChain {
   @Override
   public void addChain() {
       addLast(KeyAutoAuthHandler1.class);
       addLast(KeyAutoAuthHandler2.class);
       addLast(KeyAutoAuthHandler3.class);
   }
}
//添加注解时使用 @isAuthor(authentications = MyHandlerChain.class)

方式2:基于角色的权限校验

@RestController
@IsAuthor(authentication = AddPermissionKeyHandler.class)
public class MyController {
   @IsAuthor("visitor")
   @GetMapping("say")
   public String say(){
       return "Hello World";
   }
   @IsAuthor("vip")
   @GetMapping("eat")
   public String eat(){
       return "eat";
   }
}
@Component
public class AddPermissionKeyHandler extends AutoAuthHandler {
   @Override
   public boolean isAuthor(HttpServletRequest request, String permission) {
       ArrayList<String> permissions = new ArrayList<>();
       //或者查询数据库为当前请求添加角色key
       permissions.add("visitor");
       this.setPermissions(request,permissions);
       //查询成功,放行
       return true;
   }
}

当请求/say时,由于注释@IsAutor 被添加到 MyController类上,AddPermisonKeyHandler 中的 IsAuthor 方法将首先运行。在这个方法中,字符串“visitor”被添加到用户的权限中,因此它将会验证通过并且您可以接收 HelloWorld。
当请求/say时,由于权限列表中没有“vip”则会请求失败,抛出PermissionsException异常,可以通过全局异常处理完成权限校验

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值