spring boot
security 를 이용한 로그인시 authentication and session
파워킴
2022. 1. 7. 18:46
반응형
Spring Security 를 이용하여 로그인시에 로그인정보 저장
- form 로그인을 통해 로그인시 detailService를 통해 로그인 정보를 불러와 로그인 유효성을 따져서 로그인을 하게 된다.
- 이때 최종 login success가 되고 나면 Authentication principal의 구현체에서 가져올수 있다.
- UserDetail 데이터를 Authentication 내부에 저장을하지마 또한 Session내에도 저장을 진행한다.
SecurityContextHolder를 통한 로그인 정보 가져오기
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
// 비로그인 접근
if (authentication instanceof AnonymousAuthenticationToken) {
throw new BaseException("", MessageType.ERROR_PAGE_403.toString(), HttpStatus.OK);
}
CustomUserDetails user = (CustomUserDetails) authentication.getPrincipal();
Sesseion 객체를 통한 로그인 정보 가져오기
HttpSession session = request.getSession();
Object securityContextObject = session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY);
if(securityContextObject != null) {
SecurityContext securityContext = (SecurityContext)securityContextObject;
Authentication authentication = securityContext.getAuthentication();
// 비로그인 접근
if (authentication instanceof AnonymousAuthenticationToken) {
throw new BaseException("", MessageType.ERROR_PAGE_403.toString(), HttpStatus.OK);
}
CustomUserDetails user = (CustomUserDetails) authentication.getPrincipal();
}
- Session 개체에서는 security 관련 security_context 를 Key = "SPRING_SECURITY_CONTEXT" 에 담고 있다.
spring security 를 이용하여 로그인시에는
- security context 객체 정보를 session에 담고 있다.
반응형