2017-09-28 15 views
0

다음 로그 아웃 컨트롤러가 있습니다. 로그 아웃 사용자의 이름을 가져 오려면 어떻게해야합니까?봄 : 로그 아웃 할 때 사용자 이름을 얻는 방법

String userName=(String)session.getAttribute("name"); 이 라인은 작동하지

로그 아웃 컨트롤러

@RequestMapping(value = "/session", method = RequestMethod.DELETE) 
    public @ResponseBody ResponseEntity<?> logout(HttpSession session){ 

     String userName=(String)session.getAttribute("name"); 
     System.out.println("name: " + userName); 
     session.invalidate(); 
     return ResponseEntity.ok("user logged out"); 

    } 

답변

1

내가 어떤 봄 프로젝트 나 근처에 현재 필요는 없지만, 내가 기억하는 한,이 같은 그것을 할 수 수 :

SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 

내가 말했듯이 그것이 작동하는지 확실하지 않습니다. 내가 봄을 마지막으로 사용한 지 오래되었지만 그것이 있다면 알려주십시오.

+0

고마워요 – SFAH

0

시도해보십시오.

@Component 
public class LogoutListener implements 
ApplicationListener<SessionDestroyedEvent> { 

private static final Logger logger = 
LoggerFactory.getLogger(LogoutListener.class); 

@Override 
public void onApplicationEvent(SessionDestroyedEvent event) { 
    List<SecurityContext> lstSecurityContext = 
event.getSecurityContexts(); 
    UserDetails ud; 
    for (SecurityContext securityContext : lstSecurityContext) 
    { 
     ud = (UserDetails) 
securityContext.getAuthentication().getPrincipal(); 
     logger.info("Logout|Session destroyed User: [{}]", 
ud.getUsername()); 
    } 
} 
}  
+0

위의 답변을 참조하십시오 더 쉽게 – SFAH

+0

하지만 youtr 도움을 위해 감사 : ') – SFAH