우아한 프로그래밍

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());
profile

우아한 프로그래밍

@자바조아!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!