我有一种情况需要将path变量作为参数传递给preauthorize
@RequestMapping(value="/page/{cmd}", method = RequestMethod.GET)
@PreAuthorize("hasRole(#cmd)")
public void method(@PathVariable String cmd, HttpServletRequest request, HttpServletResponse response){
// my stuff
}
它没有工作。任何人都建议我如何在预授权中使用路径变量。
答案 0 :(得分:8)
Spring Security的@PreAuthorize
用于授权访问方法。它对Spring MVC并不是很了解,特别是关于它的@RequestMapping
注释。
#cmd
之类的名称将引用方法参数,而您的cmd
参数为null。将其更改为:
@PathVariable("cmd") String cmd
这样,cmd
路径变量将绑定到cmd
方法参数,然后由#cmd
中的@PreAuthorize
绑定。