DBA

Cookie 값을 읽어서 전역변수처럼 사용하기. 본문

[3] Development/MVC(ASP.NET with C#)

Cookie 값을 읽어서 전역변수처럼 사용하기.

코볼 2025. 4. 7. 15:07
728x90
반응형
SMALL

 

✔️ ① 쿠키 생성 예시 (로그인 성공 시 쿠키 생성)

csharp

// 로그인 성공 후 쿠키 생성
public ActionResult LoginSuccess()
{
    HttpCookie authCookie = new HttpCookie("UserCookie");
    authCookie["UserName"] = "홍길동";
    authCookie["LoginID"] = "hong123";
    authCookie["Email"] = "hong@test.com";
    authCookie["EmpNo"] = "E12345";
    authCookie["UserRole"] = "Admin";
    authCookie.Expires = DateTime.Now.AddDays(1); // 쿠키 유효기간 하루
    Response.Cookies.Add(authCookie);

    return RedirectToAction("Index", "Home");
}

 

 

✔️ ② CheckCookieAttribute에서 쿠키값 읽어서 전역으로 저장하기

전역적으로 값을 저장하기 위해선 HttpContext.Current.Items를 이용하거나, 상속받은 Controller의 속성에 저장하면 됩니다.

가장 간단한 방법은 BaseController를 이용하는 것입니다.

(1) BaseController 생성 (ApplicationController 상속)

csharp

public class ApplicationController : Controller
{
    // 전역적으로 접근 가능한 사용자 정보
    public string UserName => HttpContext.Items["UserName"] as string;
    public string LoginID => HttpContext.Items["LoginID"] as string;
    public string Email => HttpContext.Items["Email"] as string;
    public string EmpNo => HttpContext.Items["EmpNo"] as string;
    public string UserRole => HttpContext.Items["UserRole"] as string;
}

 

(2) CheckCookieAttribute 필터 설정

csharp

public class CheckCookieAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var cookie = filterContext.HttpContext.Request.Cookies["UserCookie"];

        if (cookie == null)
        {
            filterContext.Result = new RedirectResult("/Login");
            return;
        }

        // 쿠키값을 HttpContext.Items에 저장 (전역 접근 가능)
        filterContext.HttpContext.Items["UserName"] = cookie["UserName"];
        filterContext.HttpContext.Items["LoginID"] = cookie["LoginID"];
        filterContext.HttpContext.Items["Email"] = cookie["Email"];
        filterContext.HttpContext.Items["EmpNo"] = cookie["EmpNo"];
        filterContext.HttpContext.Items["UserRole"] = cookie["UserRole"];

        base.OnActionExecuting(filterContext);
    }
}

 

 

✔️ ③ Controller에서 전역변수로 접근하여 사용하기

csharp

[CheckCookie]
public class q250130Controller : ApplicationController
{
    public ActionResult Index()
    {
        ViewBag.CurrentUser = UserName; // 쿠키에서 읽어온 사용자 이름
        ViewBag.LoginID = LoginID;      // 로그인 아이디
        ViewBag.UserRole = UserRole;    // 사용자 권한

        return View();
    }
}

 

 

✔️ ④ Razor View에서 접근 예시

html

<div>
    로그인한 사용자 : @ViewBag.CurrentUser (ID: @ViewBag.LoginID)<br />
    권한 : @ViewBag.UserRole
</div>

 

 

 

📌 정리

  • 로그인 성공 시 쿠키를 생성해서 클라이언트에 전달합니다.
  • CheckCookieAttribute에서 쿠키를 검사하고 존재하면 쿠키 값을 읽어서 전역처럼 사용할 수 있도록 저장합니다.
  • 모든 컨트롤러에서 상속한 베이스 컨트롤러(ApplicationController)를 통해 쿠키에서 읽어온 사용자 정보를 전역으로 사용 가능합니다.

이 방식이 일반적이며, 유지보수에도 효과적입니다.

728x90
반응형
LIST
Comments