是否可以在自定义 PreAuthorize 方法中获取 RequestMethod-verb?

Is it possible to get the RequestMethod-verb in a custom PreAuthorize method?

我正在使用带有@PreAuthorize 的自定义访问检查程序:

@RestController
@RequestMapping("/users")
public class Users {

    @PreAuthorize("@customAccessChecker.hasAccessToMethod('USERS', 'GET')")
    @RequestMapping(method = RequestMethod.GET)
    User getUsers() {
        ...
    }

    @PreAuthorize("@customAccessChecker.hasAccessToMethod('USERS', 'POST')")
    @RequestMapping(method = RequestMethod.POST)
    User addUser() {
        ...
    }
}

我想去掉@PreAuthorize 注释中的字符串'GET' 和'POST'。是否可以通过某种方式将 @RequestMapping 中使用的 RequestMethod 作为 hasAccessToMethod 的变量输入?

我不记得要使用 SpEL 表达式从注释中获取数据,但是您可以使用 SpEL 从带有 # 字符的方法的参数中获取值。注入 HttpServletRequest,它有一个包含你想要的东西的 getMethod 方法。

@PreAuthorize("@customAccessChecker.hasAccessToMethod('USERS', #request.method)")
@RequestMapping(method = RequestMethod.POST)
User addUser(HttpServletRequest request) {
    // ...
}