如何在@Preauthorize中使用路径变量

Kri*_*nan 9 spring-security java-ee pre-authentication

我有一种情况,我需要将路径变量作为参数传递给预授权

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

它没有工作.任何人都建议我如何在预授权中使用路径变量.

X. *_*tuk 9

Spring Security @PreAuthorize用于授权访问方法.它对Spring MVC并不是很了解,特别是关于它的@RequestMapping注释.

类似的名称#cmd将引用方法参数,您的cmd参数为null.将其更改为:

@PathVariable("cmd") String cmd
Run Code Online (Sandbox Code Playgroud)

这样,cmd路径变量将绑定到cmd方法参数,然后由#cmdin 绑定@PreAuthorize.