세션(Session)

세션(Session)은 사용자가 웹 사이트에 로그인했을 때 사용자에 대한 정보를 일정 기간 동안에 서버에 기록하고 보관함으로써 사용자를 관리하기 위한 목적으로 사용되는 저장 공간이다.


세션 정보 확인

1. id 확인하기

String id = SecurityContextHolder.getContext().getAuthentication().getName();

 

SecurityContextHolder.getContext()

- Spring Security에서 현재 실행 중인 보안 컨텍스트를 제공하는 클래스이다.  이를 통해 현재 사용자의 인증 정보에 접근할 수 있다.

 

getAuthentication()

- 현재 인증된 사용자의 인증 정보를 반환한다. 이 정보는 Authentication 인터페이스를 구현한 객체로써, 현재 사용자의 자격 증명 및 권한 정보를 포함한다.

 

getName()

- Authentication 객체에서 사용자의 이름을 반환한다.

 

SecurityContextHolder.getContext().getAuthentication().getName();

- 사용자의 인증 정보에 접근하여 인증 정보를 반환 후 Authentication 객체에서 사용자의 이름을 반환하는 메서드이다.

 

2. 권한 확인하기

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
Iterator<? extends GrantedAuthority> iter = authorities.iterator();
GrantedAuthority auth = iter.next();
String role = auth.getAuthority();

 

Authentication authentication = SecurityContextHolder.getContext().getAuthentication()

- SecurityContextHolder를 사용하여 현재 스레드의 보안 컨텍스트를 가져온다. 그리고 getAuthentication을 호출하여 현재 사용자의 인증 정보를 가져온다.

 

Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities()

- getAuthorities()를 호출하여 현재 사용자의 권한 목록을 가져온다. 이 메서드는 사용자가 가진 모든 권한을 나타내는 GrantedAuthority 객체의 컬렉션을 반환한다.

 

Iterator<? extends GrantedAuthority> iter = authorities.iterator()

- authorities 컬렉션에 대한 반복자를 얻는다.

 

GrantedAuthority auth = iter.next()

- iter.next() 반복자를 사용하여 다음 권한(GrantedAuthority)을 가져온다. 보통 사용자는 여러 권한을 가질 수 있지만 이 코드에서는 첫 번째 권한만 가져온다.

 

String role = auth.getAuthority()

- getAuthority 메서드를 사용하여 현재 권한의 문자열 표현을 가져온다.


결과

1. test 아이디로 로그인

 

2. 결과