이 수행 할 수있다 단순한 저자 커스텀 미들웨어를 사용하여 검사합니다. 그러나 선택된 컨트롤러 나 액션 메소드에 맞춤형 미들웨어를 적용해야하는 경우 미들웨어 필터를 사용할 수 있습니다.
미들웨어와 응용 프로그램 빌더 확장 : 필터로 미들웨어를 사용하려면
public class SimpleHeaderAuthorizationMiddleware
{
private readonly RequestDelegate _next;
public SimpleHeaderAuthorizationMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context){
string authHeader = context.Request.Headers["Authorization"];
if(!string.IsNullOrEmpty(authHeader))
{
//TODO
//extract credentials from authHeader and do some sort or validation
bool isHeaderValid = ValidateCredentials();
if(isHeaderValid){
await _next.Invoke(context);
return;
}
}
//Reject request if there is no authorization header or if it is not valid
context.Response.StatusCode = 401;
await context.Response.WriteAsync("Unauthorized");
}
}
public static class SimpleHeaderAuthorizationMiddlewareExtension
{
public static IApplicationBuilder UseSimpleHeaderAuthorization(this IApplicationBuilder app)
{
if (app == null)
{
throw new ArgumentNullException(nameof(app));
}
return app.UseMiddleware<SimpleHeaderAuthorizationMiddleware>();
}
}
, 당신은 당신이 사용하고자하는 미들웨어 파이프 라인을 지정 Configure
방법으로 유형을 작성해야합니다.
public class SimpleHeaderAuthorizationPipeline
{
public void Configure(IApplicationBuilder applicationBuilder){
applicationBuilder.UseSimpleHeaderAuthorization();
}
}
지금 당신은 다음과 같은 특정 컨트롤러 또는 조치 방법 위의 형식을 사용할 수 있습니다 :
[MiddlewareFilter(typeof(SimpleHeaderAuthorizationPipeline))]
public class ValuesController : Controller
{
}