2015-11-08 16 views
6

Spring Security Version: spring-boot-starter-security:1.3.0.RC1Spring Security - AuthenticatedPricipal veraltet

Bemerkte, dass die Anmerkung @AuthenticationPrincipal ist veraltet.

Mögliche andere Möglichkeit, das gleiche zu erreichen und sich zu fragen, ob dies der richtige Weg ist, um Benutzerinformationen innerhalb eines Spring MVC Controllers zu erhalten. wodurch Seitenladefehler

@RequestMapping(method = RequestMethod.GET) 
public String getIndex(HttpSession session, Device device, Model model, Principal principal) { 

    /** 
    * Spring Security Fetch User 
    */ 
    if (principal != null) { 
     String username = principal.getName(); 
     User currentUser = userRepository.findByEmail(username); 
     model.addAttribute("user", currentUser.getFirstName()); 
    } 

    return "view"; 

} 

Auf einer anderen Anmerkung fand ich in abgestanden Sitzungen nicht würde die HttpSession session haben.

Antwort

15

Die Anmerkung wurde in ein anderes Paket bewegt.

Verwenden Sie org.springframework.security.core.annotation.AuthenticationPrincipal anstelle der veralteten org.springframework.security.web.bind.annotation.AuthenticationPrincipal.

-1

Das Snippet Code sollte

@RequestMapping(method = RequestMethod.GET) 
public String getIndex(HttpSession session, Device device, Model model) { 

    /** 
    * Spring Security Fetch User 
    */ 

    User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
    String username = user.getUsername(); 
    User currentUser = userRepository.findByEmail(username); 
    model.addAttribute("user", currentUser.getFirstName()); 

    return "view"; 

} 

Sie arbeiten Aufruf userRepostiory (Datenbank, ein Duplikat-Aufruf) vermeiden durch die Erweiterung Benutzerklasse und die Schaffung von Feld vorName