7

コントロールの[Authorize]属性をカスタム実装したいと考えています。ASP.NET Core(ASP.NET 5)でカスタム権限を作成する方法

これは私がやったことです。 ConfigureServicesで

  1. STARTUPCLASS

    services.AddAuthorization(options => 
    {  
        options.AddPolicy("Authorize", policy => 
        { 
         policy.AddRequirements(new MyRequirement()); 
        }); 
    }); 
    
  2. MyRequirement

    public class MyRequirement : AuthorizationHandler<MyRequirement>, IAuthorizationRequirement 
    { 
        protected override void Handle(AuthorizationContext context, MyRequirement requirement) 
        { 
         //some work 
         //if shloud be authorized 
         context.Succeed(requirement); 
        } 
    } 
    
  3. TestController

    [Authorize("Authorize")] 
    [Route("api/[controller]")] 
    public class TestController : Controller 
    { 
        ... 
    } 
    

私は行方不明ですか? MyRequirement authorizationhaderは決して呼び出されません。 ありがとうございます。

私はあなたがこの部分が欠落していると信じて
+2

あなたが実際に認証されていますか?あなたが身元を確認するまで、承認はポリシーに反映されません。 – blowdart

+0

私はそうではありません。基本認証ミドルウェアを探しているかのように見えます。 – Chatumbabub

+0

HTTP認証のような基本的な意味ですか、基本的なものなのでしょうか?テストしている間は毎回このIDを押してみたいのですか? – blowdart

答えて

6

services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>(); 

Source

+0

ポリシーを名前なしで適用して、ポリシーがすべての許可要求に適用されるようにすることは可能ですか? –

+0

ここからヘッダーにアクセスする方法は? –

+0

@mr_squallユーザ/主張の主体を取得するためにヘッダーにアクセスする必要がある場合は、** context.user.Identity **をClaimsIdentityとして型キャストして使用できます – raghav710

関連する問題