web-dev-qa-db-ja.com

aspnetコアを使用したカスタム認証フィルター

こんにちは私はローカルホストからのリクエストを自動的に承認できるようにするカスタム承認フィルターを作成しようとしています(これは私のテストに使用されます)。

Asp.netで次のものを見つけましたが、asp.netコアへの移植に問題があります。

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.Request.Url.IsLoopback)
        {
            // It was a local request => authorize the guy
            return true;
        }

        return base.AuthorizeCore(httpContext);
    }
}

これをasp.netコアに移植するにはどうすればよいですか?

7
Jamesla

ローカルホストからのリクエストを自動的に承認できるミドルウェアを作成できます。

public class MyAuthorize
{
   private readonly RequestDelegate _next;
   public MyAuthorize(RequestDelegate next)
   {
      _next = next;
   }

   public async Task Invoke(HttpContext httpContext)
   {
     // authorize request source here.

    await _next(httpContext);
   }
}

次に、拡張メソッドを作成します

public static class CustomMiddleware
{
        public static IApplicationBuilder UseMyAuthorize(this IApplicationBuilder builder)
        {
            return builder.UseMiddleware<MyAuthorize>();
        }
}

そして最後にそれをstartupConfigureメソッドに追加します。

app.UseMyAuthorize();

Asp.NetCoreにはIsLoopbackプロパティがありませんでした。これの回避策は次のとおりです https://stackoverflow.com/a/41242493/233798

ミドルウェア について詳しくはこちらもご覧ください

11
Ahmar