Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The AuthorizationPolicy named: 'Admin' was not found

I am learning Authentication/Authorization in .NET Core MVC.

I am trying to create a controller that can only be accessed by 'Admin', but get the following error.

An unhandled exception occurred while processing the request.

InvalidOperationException: The AuthorizationPolicy named: 'Admin' was not found.

Here's my code. What should I do?

[HttpGet("~/Test")]
[Authorize("Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
like image 714
JsAndDotNet Avatar asked Nov 10 '16 16:11

JsAndDotNet


2 Answers

In line with the documentation here, you have not added the Authorization attribute correctly. This is the correct way to do it.

[HttpGet("~/Test")]
[Authorize(Roles ="Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
like image 155
JsAndDotNet Avatar answered Nov 09 '22 02:11

JsAndDotNet


you can define the matching policy in Startup.cs

services.AddAuthorization(options =>
  {

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

 });

the authBuilder has other methods on it, you can require claims or specific user names or custom rules using policy based authorization and control the rules from a central place in Startup https://docs.asp.net/en/latest/security/authorization/policies.html

like image 21
Joe Audette Avatar answered Nov 09 '22 03:11

Joe Audette