锋翎文档
Java SDKAOP 切面

@PermissionVerify

基于 scope 的权限验证注解

@PermissionVerify

@PermissionVerify 注解用于在 Controller 方法执行前验证当前用户是否拥有所需的权限(scope)。

功能说明

通过 @PermissionVerify 注解声明方法所需的权限,SDK 会在方法执行前自动检查当前用户的 Token scope 是否满足要求。若权限不足,直接返回 403 JSON 响应并抛出 PermissionDeniedException,方法不会被执行。

注解参数

参数类型默认值说明
valueString[]-所需的权限(scope)字符串
requireAllbooleantrue是否需要满足所有权限(true = AND,false = OR)
messageString"权限不足"权限不足时的错误提示信息

使用方式

方法级别

在 Controller 方法上使用:

@RestController
@RequestMapping("/api/admin")
@PermissionVerify(value = "admin", message = "需要管理员权限")
public class AdminController {

    // 继承类级别的 admin 权限要求
    @GetMapping("/dashboard")
    public BaseResponse<String> dashboard() {
        return BaseResponse.success("ok", "管理面板");
    }

    // 方法级别覆盖:需要 admin 或 settings 任一权限
    @GetMapping("/settings")
    @PermissionVerify(value = {"admin", "settings"}, requireAll = false)
    public BaseResponse<String> settings() {
        return BaseResponse.success("ok", "设置");
    }
}

多权限组合

@RestController
@RequestMapping("/api")
public class DemoController {

    // AND 模式:必须同时拥有 user:read 和 user:write
    @GetMapping("/user/edit")
    @PermissionVerify(value = {"user:read", "user:write"})
    public BaseResponse<String> editUser() {
        return BaseResponse.success("ok", "编辑用户");
    }

    // OR 模式:拥有 admin 或 super_admin 任一即可
    @GetMapping("/manage")
    @PermissionVerify(value = {"admin", "super_admin"}, requireAll = false)
    public BaseResponse<String> manage() {
        return BaseResponse.success("ok", "管理");
    }
}

类级别与方法级别

方法级别的 @PermissionVerify覆盖类级别的注解。也就是说,如果类和方法上都声明了该注解,只有方法级别的注解会生效。

推荐将通用的权限要求声明在类级别上,特殊的权限要求在方法级别覆盖。

权限不足响应

当权限验证不通过时,SDK 会向客户端写入 403 JSON 响应:

{
  "code": 403,
  "message": "权限不足",
  "data": null
}

如果指定了自定义 message,响应中的 message 字段会使用你设置的值。

On this page