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
'Java 웹 프로그래밍' 카테고리의 다른 글
@QueryProjection 사용하여 DTO 조회시 query specified join fetching, but the owner of the fetched association was not present in the select list 에러 발생 (0) | 2020.08.18 |
---|---|
cannot simultaneously fetch multiple bags (0) | 2020.08.14 |
[Querydsl] Querydsl 정리글 (0) | 2020.07.20 |
깃 현재 브랜치를 보여주는 명령어 (0) | 2020.06.24 |
equals()와 hashCode() (0) | 2020.06.16 |