Spring

Spring Security 모든 인증된 사용자의 세션 확인

Seung__Yong 2023. 5. 26. 19:48

모든 사용자의 세션을 확인하기 위해서는 sessionRegistry를 이용해야 하고 이를 주입받기 위해서는 SecurityConfig파일에 등록해주어야 합니다.

@Bean
public SessionRegistry sessionRegistry() {
    return new SessionRegistryImpl();
}
private final SessionRegistry sessionRegistry;

@GetMapping("/")
public String home(HttpServletRequest request, Model model, HttpSession session) {
    List<Object> allPrincipals = sessionRegistry.getAllPrincipals();
    
    // 각 Principal(사용자)에 대한 세션 정보를 가져옵니다.
    for (Object principal : allPrincipals) {
        if (principal instanceof UserDetails) {
            UserDetails userDetails = (UserDetails) principal;
            // 현재 사용자의 모든 세션 정보를 가져옵니다.
            List<SessionInformation> sessions = sessionRegistry.getAllSessions(userDetails, false);
            sessions.stream().forEach(s-> log.info(userDetails.getUsername()+" : "+ s.getSessionId()));
        }
    }
    return "home";
}