Как использовать переменную пути в @Preauthorize
У меня есть ситуация, когда мне нужно передать переменную пути в качестве аргумента для предварительной авторизации
@RequestMapping(value="/page/{cmd}", method = RequestMethod.GET)
@PreAuthorize("hasRole(#cmd)")
public void method(@PathVariable String cmd, HttpServletRequest request, HttpServletResponse response){
// my stuff
}
Это не работает. Может кто-нибудь предложить мне, как использовать переменную пути в предварительной авторизации, пожалуйста.
1 ответ
Spring Security's @PreAuthorize
используется для авторизации доступа к методам. Он не очень много знает о Spring MVC, в частности о его @RequestMapping
аннотаций.
Имена как #cmd
будет ссылаться на параметры метода, а ваш cmd
параметр является нулевым. Измените это на:
@PathVariable("cmd") String cmd
Сюда, cmd
переменная пути будет связана с cmd
параметр метода, который затем будет связан #cmd
в @PreAuthorize
,