我正在使用@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的变量输入以某种方式获取?
答案 0 :(得分:2)
我无法记住SpEL表达式从注释中获取数据,但您可以使用SpEL从#
字符的方法参数中获取值。注入HttpServletRequest
,它有getMethod
方法,其中包含您想要的内容。
@PreAuthorize("@customAccessChecker.hasAccessToMethod('USERS', #request.method)")
@RequestMapping(method = RequestMethod.POST)
User addUser(HttpServletRequest request) {
// ...
}