
目的or背景
shiro有个注解是@RequiresPermissions,接口方法加上这个表示需要有指定权限才能访问,不然提示无权限访问等类似信息,这个吧,有点意思,没玩过,所以就来简单模仿下,自己自定义一个注解,具备指定权限才可调通。
码代码的工具人—is me
接下来就是demo实现
1. 自定义一个校验权限的注解
package com.example.demo.anno;
import java.lang.annotation.*;
/**
*
* @author apollo
* @description
* @date 2021/11/27 10:01
*/
@Target({
ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface VerifyPermissions {
/**
* 权限标识
*/
String[] value();
}
2. 码好咱们的切面
在这里面我先写死用户有【book_read】的权限,你们可根据自己的业务查数据库or缓存,自由发挥,只是个demo,别太较真
package com.example.demo.aspect;
import com.example.demo.anno.VerifyPermissions;
import com.example.demo.exception.BaseException;
import com.example.demo.exception.Code;
import com.example.demo.exception.Message;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.aspectj.lang.JoinPoint
自定义权限注解与API鉴权实现

本文介绍了如何模仿Shiro的@RequiresPermissions注解,自定义一个权限校验注解,并通过AOP实现API权限验证。作者创建了一个名为@VerifyPermissions的注解,然后在切面中检查用户权限,确保只有拥有特定权限的用户才能访问相关API。通过示例代码展示了如何在Controller中使用该注解,并通过Postman进行测试,验证了权限校验的效果。
最低0.47元/天 解锁文章
1995

被折叠的 条评论
为什么被折叠?



