max*_*axo 3 java spring spring-annotations spring-restcontroller request-mapping
我正在使用带有@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() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想去掉@PreAuthorize 注释中的字符串“GET”和“POST”。是否可以将@RequestMapping 中使用的 RequestMethod 以某种方式作为 hasAccessToMethod 的变量输入?
我不记得从注释中获取数据的 SpEL 表达式,但是您可以使用 SpEL 从带有#字符的方法的参数中获取值。注入HttpServletRequest,它有一个getMethod包含你想要的方法。
@PreAuthorize("@customAccessChecker.hasAccessToMethod('USERS', #request.method)")
@RequestMapping(method = RequestMethod.POST)
User addUser(HttpServletRequest request) {
// ...
}
Run Code Online (Sandbox Code Playgroud)