DBA

ASP.NET MVC에서 [CheckCookie] 사용자 지정 필터(Attribute)로 쿠키 인증 처리하는 방법 본문

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

ASP.NET MVC에서 [CheckCookie] 사용자 지정 필터(Attribute)로 쿠키 인증 처리하는 방법

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

 

ASP.NET MVC에서 [CheckCookie]와 같은 사용자 지정 Attribute는 컨트롤러나 액션 실행 전에 특정 검사를 수행할 수 있게 해주는 매우 유용한 기능입니다. 특히 로그인 여부를 쿠키로 확인하는 인증 로직을 구현할 때 자주 사용됩니다. 이번 글에서는 [CheckCookie]를 클래스 위에 붙였을 때 어떻게 작동하는지, 그리고 쿠키를 활용한 인증 처리 방식을 코드 예제를 통해 쉽게 설명해 드리겠습니다.

 

1. 사용자 지정 필터란?

사용자 지정 필터는 ASP.NET MVC에서 ActionFilterAttribute, IAuthorizationFilter 등의 인터페이스를 상속받아 직접 기능을 정의할 수 있는 Attribute입니다. 특정 컨트롤러나 액션이 실행되기 전(before) 또는 후(after)에 원하는 로직을 삽입할 수 있습니다.

 

2. [CheckCookie]는 어떻게 작동하는가?

csharp

[CheckCookie]
public class q250130Controller : ApplicationController
{
    public ActionResult Index()
    {
        return View();
    }
}

 

위 예시에서 [CheckCookie]는 q250130Controller 클래스에 선언되어 있습니다. 이 경우:

  • 해당 컨트롤러 내 모든 액션 메서드 실행 전에 CheckCookie 필터가 작동합니다.
  • 쿠키가 존재하지 않거나 인증 조건을 만족하지 않을 경우, 요청을 차단하고 로그인 페이지로 리디렉션시킬 수 있습니다.

 

3. CheckCookie 필터 구현 예제

csharp

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

        if (authCookie == null || string.IsNullOrWhiteSpace(authCookie.Value))
        {
            // 인증 실패 → 로그인 페이지로 이동
            filterContext.Result = new RedirectResult("/Account/Login");
            return;
        }

        // 필요한 경우 쿠키 값 추가 검증 가능
        // 예: 토큰 유효성, 사용자 권한 체크 등

        base.OnActionExecuting(filterContext);
    }
}

 

이 필터는 AuthUser라는 이름의 쿠키가 클라이언트 요청에 포함되어 있는지 확인합니다. 없거나 빈 값이면 로그인 페이지로 강제 이동됩니다.

 

 

4. 컨트롤러 전체에 필터 적용의 장점

csharp

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

 

 

  • 이처럼 클래스에 필터를 적용하면 해당 컨트롤러의 모든 액션에서 인증 로직을 반복하지 않아도 됨
  • 중복 제거, 유지보수 용이, 보안 강화 효과

 

5. 쿠키 인증 처리 시 주의할 점

보안 이슈 고려하기

  • 쿠키에 저장하는 값은 암호화 또는 서명된 토큰 형식 사용 권장
  • HttpOnly, Secure 속성 설정으로 XSS 및 MITM 방지

만료 시간 설정

  • 로그인 유지 기간을 제어하기 위해 Expires 속성 지정 필요

로그아웃 처리

  • 사용자가 로그아웃 시 쿠키 삭제로 인증 정보 제거 필요

 

 

 

결론

ASP.NET MVC에서 [CheckCookie]와 같은 사용자 지정 필터를 클래스 단위로 적용하면, 로그인 상태를 효과적으로 확인할 수 있습니다. 특히 쿠키를 활용한 인증 처리는 서버 부하를 줄이면서도 사용자 편의성을 제공할 수 있는 방법입니다. 코드의 중복을 줄이고, 인증 체크를 깔끔하게 분리하고 싶다면 [CheckCookie] (사용자 지정 필터(Attribute))를 활용해보세요.

 

728x90
반응형
LIST