是否可以在自定义 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) {
// ...
}
我正在使用带有@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) {
// ...
}