web-dev-qa-db-ja.com

「Authorization」という名前のAuthorizationPolicyが見つかりませんでした

.NET Core MVCで認証/承認を学んでいます。

「Admin」だけがアクセスできるコントローラを作成しようとしていますが、次のエラーが発生します。

リクエストの処理中に未処理の例外が発生しました。

InvalidOperationException:「Admin」という名前のAuthorizationPolicyが見つかりませんでした。

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

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

startup.csで一致ポリシーを定義できます

services.AddAuthorization(options =>
  {

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

 });

authBuilderには他のメソッドがあり、ポリシーベースの承認を使用してクレームまたは特定のユーザー名またはカスタムルールを要求し、スタートアップの中心的な場所からルールを制御できます https://docs.asp.net/en/latest /security/authorization/policies.html

18
Joe Audette

ドキュメント here に従って、Authorization属性を正しく追加していません。これが正しい方法です。

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