현재 메인 페이지에 구현되어 있는 정보로써 DB에서 데이터를 받아오는 것이 아닌 세션에서 현재 로그인된 세션을 받아오는 방법을 소개하고자 한다.
현재 세션에 등록되어 있는 유저의 정보를 받는 방법은 다음 코드로 구현할 수 있다.
String id = SecurityContextHolder.getContext().getAuthentication().getName();
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> collection = auth.getAuthorities();
Iterator<? extends GrantedAuthority> iterator = collection.iterator();
GrantedAuthority grantedAuthority = iterator.next();
String role = grantedAuthority.getAuthority();
추가적으로 세션에 대한 설정도 할 수 있다.
해당 내용은 SecurityConfig에서 설정할 수 있고 다음과 같다.
http.sessionManagement((auth) -> auth
.maximumSessions(1)
.maxSessionsPreventsLogin(true));
http.sessionManagement((auth) -> auth.sessionFixation().changeSessionId());