2010-03-27 4 views
11

Lors de l'utilisation de la sécurité de ressort, en particulier avec @notation; quelle est la bonne façon d'accéder au principal dans un contrôleur? Disons que ce qui suit est mon contrôleur, mais je voudrais accéder au principal dans la méthode sécurisée() quelque part ...Sécurité de ressort accédant au principal

@Controller 
public class LoginController { 

    @RequestMapping(value = "/login", method = RequestMethod.GET) 
    public String login(ModelMap map, @RequestParam(value="fail" , required=false) String fail){ 
     map.addAttribute("title", "Login: AD Credentials"); 
     if(fail != null){ 
      map.addAttribute("error", "Invalid credentials"); 
     } 
     return("login"); 
    } 

    @RequestMapping("/secure") 
    @PreAuthorize("isAuthenticated()") 
    public String secure(ModelMap map, String principal){ 
     System.out.println(principal); 
     return("secure"); 
    } 


} 

Répondre

15

Le plus simple est SecurityContextHolder.getContext().getAuthentication().getPrincipal(). Fonctionne via un motif local-thread.

Questions connexes