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

时间:2013-07-23 10:28:22

标签: java-ee spring-security pre-authentication

我有一种情况需要将path变量作为参数传递给preauthorize

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

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

1 个答案:

答案 0 :(得分:8)

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

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

@PathVariable("cmd") String cmd

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