2015-11-08 23 views
6
wersję

Wiosna zabezpieczeń: spring-boot-starter-security:1.3.0.RC1Wiosna Bezpieczeństwo - AuthenticatedPricipal przestarzałe

zauważyć, że adnotacja @AuthenticationPrincipal została zaniechana.

Możliwe różne sposoby osiągnięcia tego samego i zastanawiają się, czy jest to właściwy sposób uzyskania informacji o użytkowniku w kontrolerach Spring MVC.

@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"; 

} 

Na innej notatki nie znaleziono mający HttpSession session powodowałby sesji nieświeży powodujących błędy ładowania strony.

Odpowiedz

15

Adnotacja został przeniesiony do innego opakowania.

Użyj org.springframework.security.core.annotation.AuthenticationPrincipal zamiast wycofanego org.springframework.security.web.bind.annotation.AuthenticationPrincipal.

-1

Kod poniżej fragment powinien działać

@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"; 

} 

Można uniknąć wzywającą userRepostiory (bazy danych, duplikat połączenia) poprzez rozszerzenie klasy użytkownika i tworząc pole firstName

Powiązane problemy