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);