Вопрос

I have a situation where i need to pass the path variable as a argument to the preauthorize

    @RequestMapping(value="/page/{cmd}", method = RequestMethod.GET)
    @PreAuthorize("hasRole(#cmd)") 
     public void method(@PathVariable String cmd, HttpServletRequest request,  HttpServletResponse response){
// my stuff
}

It is not working.can anyone suggest me how to use the path variable in pre authorize please.

Это было полезно?

Решение

Spring Security's @PreAuthorize is used for authorizing access to methods. It doesn't know really much about Spring MVC, in particular about its @RequestMapping annotation.

Names like #cmd will refer to method parameters, and your cmd parameter is null. Change it to:

@PathVariable("cmd") String cmd

This way, cmd path variable will be bound to cmd method parameter, which will then be bound by #cmd in @PreAuthorize.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top