5

.NET Core MVCで認証/承認を学習しています。「Admin」という名前のAuthorizationPolicyが見つかりませんでした。

「Admin」でしかアクセスできないコントローラを作成しようとしていますが、次のエラーが表示されます。

要求の処理中に未処理の例外が発生しました。

InvalidOperationException:「管理者」という名前のAuthorizationPolicyが ではありませんでした。

ここに私のコードです。私は何をすべきか?

[HttpGet("~/Test")] 
[Authorize("Admin")] 
public async Task<string> MyMethod() 
{ 
    return await Task<string>.Run(() => "Hello Admin"); 
} 

答えて

9

あなたはStartup.csに一致するポリシーを定義することができ

services.AddAuthorization(options => 
    { 

     options.AddPolicy("Admin", 
      authBuilder => 
      { 
       authBuilder.RequireRole("Administrators"); 
      }); 

}); 

authBuilderは、ポリシーベースの認証を使用して請求または特定のユーザー名またはカスタムルールを必要とし、制御することができ、その上に他の方法を持っていますスタートアップの中心的な場所からのルール https://docs.asp.net/en/latest/security/authorization/policies.html

+0

ニース。これを「正解」答えとしてマークすると、コントローラー内のきれいなコードにつながります。 – HockeyJ

2

文書hereに沿って、権限属性が正しく追加されていません。これは正しい方法です。

[HttpGet("~/Test")] 
[Authorize(Roles ="Admin")] 
public async Task<string> MyMethod() 
{ 
    return await Task<string>.Run(() => "Hello Admin"); 
} 
関連する問題