본문 바로가기
Java 웹 프로그래밍

[Spring] Controller 이외의 클래스에서 세션 값 사용하기

by irerin07 2020. 7. 28.
728x90

 

import javax.servlet.http.HttpSession;
import kr.test.apiserver.domain.user.User;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

public class UserInfoUtility {

  public static User getCurrentUserEntitiy() {
    ServletRequestAttributes servletRequestAttribute = (ServletRequestAttributes) RequestContextHolder
        .currentRequestAttributes();
    HttpSession httpSession = servletRequestAttribute.getRequest().getSession(true);
    return (User)httpSession.getAttribute("UserInfo");
  }

}

 

 

Spring Securoty에서 제공하는 SecurityContextHolder를 사용하지 않고 유저 정보를 전역적으로 가져올 수 있는 방법을 찾다가 알게 된 방법.

 

유저가 로그인에 성공하면 session에 UserInfo라는 이름으로 값을 저장해주고

 

이를 Controller뿐만이 아니라 다른 곳(Service, DTO...)에서도 사용하기 위해서 위와 같은 코드를 작성했다.

728x90