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