DBA

C# ASP.NET MVC에서 사용자 지정 필터(Attribute)와 쿠키(Cookie) 활용법 본문

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

C# ASP.NET MVC에서 사용자 지정 필터(Attribute)와 쿠키(Cookie) 활용법

코볼 2025. 4. 7. 14:12
728x90
반응형
SMALL

 

ASP.NET MVC에서 사용자 지정 필터와 Cookie를 활용한 로그인 인증 완전 정복

- 사용자 지정 필터란 무엇인가?

- Cookie를 활용한 사용자 인증의 장단점

- 사용자 지정 필터 구현 및 Cookie 인증 처리 예제

  - 사용자 지정 Attribute 만들기

  - Cookie 저장 및 확인 로직

  - 쿠키 인증이 필요한 상황과 주의사항

 

웹 애플리케이션에서 로그인 상태를 유지하는 방법은 다양하지만, 가장 널리 사용되는 방식 중 하나가 Cookie입니다. ASP.NET MVC에서는 사용자 지정 필터(Attribute)를 활용하여 특정 컨트롤러나 액션에서 로그인 여부를 체크하고, 필요한 경우 쿠키를 통해 인증 상태를 확인할 수 있습니다. 이번 글에서는 Cookie를 사용한 로그인 처리와 사용자 지정 필터 구현 방법을 예제를 통해 자세히 알아보겠습니다.

 

1. 사용자 지정 필터란?

사용자 지정 필터는 ActionFilterAttribute 또는 IAuthorizationFilter 등을 상속받아 개발자가 직접 정의하는 필터입니다. 특정 액션 실행 전 또는 후에 공통 로직을 삽입할 수 있어 코드의 재사용성과 유지보수성을 높여줍니다.

 

2. Cookie 인증 방식이란?

Cookie는 클라이언트에 저장되는 작은 데이터로, 서버는 이를 통해 사용자의 인증 상태를 유지할 수 있습니다. 일반적으로 로그인 성공 시 사용자 정보를 쿠키에 저장하고, 이후 요청마다 쿠키를 확인하여 인증 여부를 판단합니다.

장점

  • 클라이언트에서 관리되므로 서버 부하 감소
  • 브라우저를 닫아도 유지 가능 (만료 시간 설정 시)

⚠️ 주의사항

  • 암호화되지 않은 쿠키는 보안에 취약
  • 민감한 정보 저장은 지양

3. 사용자 지정 필터 + 쿠키 인증 구현

3.1 사용자 지정 필터 정의

csharp

public class CookieAuthAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var cookies = filterContext.HttpContext.Request.Cookies;
        var authCookie = cookies["AuthUser"];

        if (authCookie == null || string.IsNullOrEmpty(authCookie.Value))
        {
            // 쿠키가 없으면 로그인 페이지로 이동
            filterContext.Result = new RedirectResult("/Account/Login");
        }

        base.OnActionExecuting(filterContext);
    }
}

 

3.2 컨트롤러에 적용

csharp

[CookieAuth]
public ActionResult Dashboard()
{
    var userName = Request.Cookies["AuthUser"]?.Value;
    ViewBag.UserName = userName;
    return View();
}

 

3.3 로그인 시 쿠키 저장

csharp

public ActionResult Login(string username, string password)
{
    if (IsValidUser(username, password))
    {
        HttpCookie authCookie = new HttpCookie("AuthUser", username);
        authCookie.Expires = DateTime.Now.AddHours(1); // 1시간 유효
        Response.Cookies.Add(authCookie);

        return RedirectToAction("Dashboard");
    }

    ViewBag.Message = "로그인 실패!";
    return View();
}

 

3.4 로그아웃 (쿠키 삭제)

csharp

public ActionResult Logout()
{
    if (Request.Cookies["AuthUser"] != null)
    {
        HttpCookie cookie = new HttpCookie("AuthUser");
        cookie.Expires = DateTime.Now.AddDays(-1); // 만료 처리
        Response.Cookies.Add(cookie);
    }

    return RedirectToAction("Login");
}

 

 

4. 언제 쿠키 인증을 사용하는가?

쿠키 인증은 다음과 같은 상황에서 유용합니다:

  • 브라우저를 닫아도 로그인 상태 유지가 필요할 때
  • 세션 서버 사용이 제한적인 환경
  • 경량 사용자 인증이 필요한 서비스

하지만 보안상 민감 정보는 반드시 암호화하여 저장하거나, 쿠키가 아닌 다른 인증 방식(예: JWT, OAuth 등)을 고려해야 합니다.

 

 

결론

ASP.NET MVC에서 사용자 지정 필터를 활용하면 로그인 여부를 자동으로 검사하는 중복 없는 클린 코드를 작성할 수 있습니다. 특히 쿠키와 함께 사용하면 인증 상태를 효율적이고 간편하게 유지할 수 있습니다. 이번 글에서 소개한 방식은 소규모 프로젝트나 내부 시스템에 매우 적합하며, 보안적인 요소만 주의하면 실무에서도 충분히 사용할 수 있는 구조입니다.

728x90
반응형
LIST