2015-11-08 2 views
6
версии

Spring Security: spring-boot-starter-security:1.3.0.RC1Spring Security - AuthenticatedPricipal осуждается

Замечая, что аннотация @AuthenticationPrincipal устарела.

Возможный другой способ выполнить одно и то же и задаться вопросом, является ли это правильным способом получения информации о пользователе в Spring MVC Controller.

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

} 

На другой ноте я обнаружил, не имея HttpSession session приведет к несвежих сессий, вызывающих ошибки загрузки страницы.

ответ

15

аннотаций были перемещены в другой пакет.

Использовать org.springframework.security.core.annotation.AuthenticationPrincipal вместо устаревшего org.springframework.security.web.bind.annotation.AuthenticationPrincipal.

-1

Ниже фрагмент код должен работать

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

} 

Вы можете избежать вызова userRepostiory (базы данных, дубликат вызова) путем расширения пользовательского класса и создания поля ПгвЬЫата

Смежные вопросы