11

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

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

它不起作用。任何人都可以建议我如何在预授权中使用路径变量。

4

1 回答 1

15

Spring Security@PreAuthorize用于授权对方法的访问。它对 Spring MVC 知之甚少,尤其是它的@RequestMapping注解。

名称 like#cmd将引用方法参数,并且您的cmd参数为空。将其更改为:

@PathVariable("cmd") String cmd

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

于 2016-06-01T09:23:36.160 回答