asp.net core ミドルウェアのルート属性をチェックする 質問する

asp.net core ミドルウェアのルート属性をチェックする 質問する

ASP.Net コア ミドルウェアを構築しようとしています。

現在のルートが [Authorize] としてマークされているかどうかを確認する必要があります。

例えば:

public async Task Invoke(HttpContext context)
{
    if(context.Request.Path.Value.StartsWith("/api"))
    {
        // check if route is marked as [Authorize]
        // and then do some logic
    }

    await _next.Invoke(context);
}

これを実現する方法、あるいはそれが可能かどうかを知っている人はいますか?

そうでない場合、代わりの良いアプローチは何でしょうか?

ベストアンサー1

これは、ミドルウェア クラスで次のように実現できると考えています。

var hasAuthorizeAttribute = context.Features.Get<IEndpointFeature>().Endpoint.Metadata
                .Any(m => m is AuthorizeAttribute);

おすすめ記事