小编cdu*_*rth的帖子

.net核心身份2.1角色授权不起作用

我已经在2.1之前多次实现了基于角色的身份验证。按照步骤搭建新的2.1身份。

我扩展了IdentityUser模型以添加其他字段,登录工作正常,并且存在新字段。

startup.cs配置服务包含

         services.AddDefaultIdentity<AppUser>()
            .AddRoles<IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)

我播下了角色

         IdentityRole role = new IdentityRole();
         role.Name = "Administrator";
         IdentityResult roleResult = roleManager.
         CreateAsync(role).Result;
Run Code Online (Sandbox Code Playgroud)

然后创建一个用户并添加到角色中

        AppUser user = new AppUser();
        user.UserName = "Admin";
        user.Email = "admin@admin.com";
        user.Name = "Administrator";
        user.LockoutEnabled = false;
        user.EmailConfirmed = true;

        IdentityResult result = userManager.CreateAsync(user, "password").Result;

        if (result.Succeeded)
        {
            userManager.AddToRoleAsync(user, "Administrator").Wait();
        }
Run Code Online (Sandbox Code Playgroud)

一切都成功了,数据库看起来还不错(AspNetUserRoles有链接)

但是,用角色装饰控制器将始终返回未经授权的状态

       [Authorize(Roles = "Administrator")]
Run Code Online (Sandbox Code Playgroud)

但是,带有[Authorize](无角色)的简单登录检查将起作用。

如何解决此问题/最简单的方法来合并源代码,以便我可以逐步/调试[Authorize]代码?

asp.net-core-mvc asp.net-core asp.net-core-identity

9
推荐指数
2
解决办法
5487
查看次数