2017-10-14 20 views
1

.NET 코어가 2.0으로 변경된 후에이 특정 문제에 대한 정보를 찾을 수 없었습니다. . 단순히 간단한 헤더에 따라 권한을 부여 내가 찾은 예에서 싶습니다 내 컨트롤러의 다른 부분 (들어.net core 2.0에서 간단한 헤더 인증을 수행하는 방법은 무엇입니까?

services.AddAuthentication("ExampleCookieAuthenticationScheme") 
    .AddCookie("ExampleCookieAuthenticationScheme", options => { 
     options.AccessDeniedPath = "/Account/Forbidden/"; 
      options.LoginPath = "/Account/Login/"; 
}); 

, 중 내가 드릴 수 없습니다 :

이 같은 쿠키 권한이 헤더를 얻기 위해, 또는 만 페이스 북, 구글 쿠키 등을되었습니다

나는 닷넷 코어 간단한 헤더 검사를 수행 권한을 추가하려면 어떻게 2.0?

답변

1

이 수행 할 수있다 단순한 저자 커스텀 미들웨어를 사용하여 검사합니다. 그러나 선택된 컨트롤러 나 액션 메소드에 맞춤형 미들웨어를 적용해야하는 경우 미들웨어 필터를 사용할 수 있습니다.

미들웨어와 응용 프로그램 빌더 확장 : 필터로 미들웨어를 사용하려면

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 
{ 
}