1. 문제상황
컨트롤러에서 Session객체를 가져오는 것은 쉽다. 하지만 SERVICE / DAO / UTIL 등 기타 클래스에서 Session을 가져오는 것은 어떤가? 이러한 문제 상황이 닥쳤을때의 해결방법을 알아보자.
2. 해결방법
간단하다 아래의 클래스를 만들고 사용하면 된다.
package com.sample.vue.common.utils;
import javax.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.sample.vue.user.model.UserEntity;
public class AuthUtil {
public static boolean isAdmin() {
ServletRequestAttributes servletRequestAttribute = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession httpSession = servletRequestAttribute.getRequest().getSession(true);
if( ((UserEntity)httpSession.getAttribute("userEntity")).getType().equals("01")) {
return true;
}else {
return false;
}
}
public static UserEntity getCurrentUserEntitiy() {
ServletRequestAttributes servletRequestAttribute = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession httpSession = servletRequestAttribute.getRequest().getSession(true);
return (UserEntity)httpSession.getAttribute("userEntity");
}
public static String getCurrentUserAccount() {
ServletRequestAttributes servletRequestAttribute = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession httpSession = servletRequestAttribute.getRequest().getSession(true);
return( (UserEntity)httpSession.getAttribute("userEntity")).getAccount();
}
}
아래 처럼 사용하면 된다.
param.put("account", AuthUtil.getCurrentUserAccount());
'프로그래밍 > Spring' 카테고리의 다른 글
Spring Test @TestPropertySource Yml이 읽히지 않는다(?) (0) | 2024.04.09 |
---|---|
스프링에서 문자(String)로된 함수 혹은 표현식 실행하기 (0) | 2019.12.05 |
[SPRING/환경구축] Spring AOP를 이용한 Transaction(트랜잭션) 설정을 했는데도 적용되지 않는 현상. (0) | 2018.07.28 |
[SPRING/환경구축] 스프링에서 LOGBACK을 설정하는 방법을 알아보자! (0) | 2018.07.21 |
[SPRING/스프링] 이클립스에서 Spring Boot (스프링부트) 프로젝트 만들기 (1) | 2016.07.09 |