Как использовать переменную пути в @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,

Другие вопросы по тегам