2013-07-23 2 views
6

ich eine Situation, wo ich auf die Preauthorize den Pfad Variable als Argument übergeben müssenWie in @Preauthorize Pfadvariablen verwenden

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

Es ist nicht jemand working.can mir vorschlagen, wie Sie den Pfad verwenden Variable in vor autorisieren bitte.

Antwort

2

Spring Security @PreAuthorize wird verwendet, um den Zugriff auf Methoden zu autorisieren. Es weiß nicht wirklich viel über Spring MVC, insbesondere über seine @RequestMapping Annotation.

Namen wie #cmd beziehen sich auf Methodenparameter und Ihr cmd Parameter ist null. Ändern Sie ihn auf:

@PathVariable("cmd") String cmd 

Auf diese Weise wird cmd Pfadvariablen zu cmd Methodenparameter gebunden werden, die dann durch #cmd in @PreAuthorize gebunden.