파워노트

security 를 이용한 로그인시 authentication and session 본문

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에 담고 있다. 

 

반응형
Comments