Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# ASP.NET Web API의 다양한 필터 유형 완벽 정리

필터(Filter)는 Web API 프레임워크의 요청 처리 과정에서 여러 단계에 걸쳐 추가 로직을 주입하기 위해 사용됩니다. 필터는 로깅, 인증, 캐싱과 같은 횡단 관심사(cross-cutting concerns)를 처리하는 방법을 제공하며, 선언적 방식(특성) 또는 프로그래밍 방식으로 액션 메서드나 컨트롤러에 적용할 수 있습니다.

아래에서 C# Web API에서 사용할 수 있는 필터 유형을 자세히 살펴보겠습니다.

1. 인증 필터(Authentication Filter)

인증 필터는 사용자 정보를 검증하는 역할을 합니다. 인증 필터 내부에서 사용자의 신원이 유효한지 확인하는 로직을 직접 작성할 수 있습니다.

2. 권한 부여 필터(Authorization Filter)

권한 부여 필터는 사용자가 리소스에 접근할 권한이 있는지 확인하는 역할을 담당합니다. 프레임워크에서는 IAuthorizationFilter 인터페이스를 구현하여 만들 수 있습니다.

3. 액션 필터(Action Filter)

액션 필터는 액션 메서드 실행 전후에 추가 로직을 삽입할 때 사용됩니다. OnActionExecuting 메서드로 액션 실행 전 로직을, OnActionExecuted 메서드로 액션 실행 후 로직을 처리할 수 있습니다.

4. 예외 필터(Exception Filter)

예외 필터는 컨트롤러 메서드에서 HttpResponseException이 아닌 처리되지 않은(unhandled) 예외가 발생했을 때 실행됩니다. HttpResponseException 타입은 HTTP 응답을 반환하도록 특별히 설계된 특수한 예외이므로 이 필터의 대상에서 제외됩니다.

5. 재정의 필터(Override Filter)

재정의 필터는 개별 액션 메서드에 대해 다른 필터의 동작을 사용자 지정할 때 사용됩니다. 예를 들어 컨트롤러 수준에 필터를 적용했지만, 그중 특정 액션 메서드에는 해당 필터를 적용하고 싶지 않은 경우 필터의 재정의 버전을 활용해 원하는 동작만 변경할 수 있습니다.

필터 적용 방식 3가지

필터는 일반적으로 다음 세 가지 수준에서 적용됩니다.

  • 컨트롤러(Controller) 수준
  • 액션 메서드(Action Method) 수준
  • 전역(Global) 수준 — WebApiConfig.cs

그럼 권한 부여 필터의 실제 구현 예제와 작동 방식을 살펴보겠습니다.

구현 예제

using System.Web.Http;
namespace DemoWebApplication.Controllers{
    public class DemoController : ApiController{
        [Authorize]
        public IHttpActionResult Get(){
            return Ok();
        }
    }
}

위 코드처럼 액션 메서드에 [Authorize] 특성을 추가하면, 해당 액션 메서드에 접근하려면 Bearer 토큰, API 키, OAuth 등과 같은 적절한 인증·권한 부여 방식을 사용해야 합니다. 권한 없이 접근을 시도하면 아래와 같이 401 Unauthorized 응답이 반환됩니다.