我已经在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]代码?