.net core identity 2.1 role authorize not working

后端 未结 3 511
忘了有多久
忘了有多久 2020-12-10 13:23

I\'ve implemented role based auth several times pre 2.1. Followed the steps to scaffold the new 2.1 identities.

I extended the IdentityUser model to add additional f

3条回答
  •  时光取名叫无心
    2020-12-10 13:38

    How to fix

    However, decorating a controller with a role will always return not authorized

      [Authorize(Roles = "Administrator")]
    

    It's a known bug in the version of 2.1 . See issue here .

    I follow the advice of using the old api suggested by HaoK and C-BERBER , and it now works flawlessly .

    Here's my DbContext:

    public class ApplicationDbContext : IdentityDbContext
    {
        public ApplicationDbContext(DbContextOptions options)
            : base(options)
        {
        }
    }
    

    Configure the identity using the old-style api :

    services.AddIdentity()
            .AddRoleManager>()
            .AddDefaultUI()
            .AddDefaultTokenProviders()
            .AddEntityFrameworkStores();
    

    Lastly , logout and re-signin , it will work as expected now .

    How to Debug source code

    I guess you won't want to debug the AuthorizeAttribe itself , since it is processed at compile-time . If you mean to debug the AuthorizeFilter , you can follow the steps as below :

    click Tools -> Options -> Debugging

    1. within General , unselect the Enable Just My Code in Visual Studio
    2. select Enable Source Link Support
    3. within Symbols , make sure that the Microsoft Symbol Servers is selected

    And you can debug the source code now . However , due to the way that filter works , you need set a breakpoint before MVC . I just set a dummy middleware that will take place before the MVC router handler :

    The screenshot of debugging AuthorizeFiler :

提交回复
热议问题