【发布时间】:2019-03-02 17:32:36
【问题描述】:
在 2.1 之前,我已经多次实施基于角色的身份验证。按照步骤搭建新的 2.1 标识。
我扩展了 IdentityUser 模型以添加其他字段,登录工作正常,新字段出现。
startup.cs 配置服务包含
services.AddDefaultIdentity<AppUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
我为角色播种
IdentityRole role = new IdentityRole();
role.Name = "Administrator";
IdentityResult roleResult = roleManager.
CreateAsync(role).Result;
然后创建一个用户并添加到角色中
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();
}
一切顺利,数据库看起来很好(AspNetUserRoles 有链接)
但是,用角色装饰控制器总是会返回未授权
[Authorize(Roles = "Administrator")]
但是,使用[Authorize](无角色)进行简单的登录检查即可。
我该如何解决这个问题/合并源代码的最简单方法是什么,以便我可以单步调试/调试[Authorize] 标签?
【问题讨论】:
-
要调试也许你可以使用 [Authorize] 并在操作方法中添加某处: var claim = User.Claims;因此,您可以查看声明是否真的存在
-
您是否配置了cookies?
标签: asp.net-core asp.net-core-mvc asp.net-core-identity