일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- upbit
- PromptEngineering
- 초딩수학
- MYSQL
- MSSQL
- 썸머노트
- httpclient timeout
- Kakao API Address
- 한글깨짐
- Android
- chart.js
- 오블완
- largelanguagemodels
- ASP.NET MVC
- cc챔피언
- 중1코딩
- python
- 코딩입문
- .csv
- swift 화면전환
- 아이코딩습관
- 일본여행
- Excel
- 엔트리
- MS-SQL
- 중학생코딩
- league of legends
- AIoptimization
- 블록코딩
- Aspose.cells
Archives
- Today
- Total
DBA
Cookie 값을 읽어서 전역변수처럼 사용하기. 본문
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