【发布时间】:2018-10-15 21:06:47
【问题描述】:
我正在使用 ASP.NET Core Identity 2.0.2。当我调用UserManager.RemoveFromRoleAsync 时,它不会从用户中删除角色。它说:
Microsoft.AspNetCore.Identity.UserManager:警告:用户 b651a459-5d6b-4239-88e6-facb33f11e87 不是管理员角色。
代码如下:
var userResult = await _userManager.RemoveFromRoleAsync(
user,
requestRole.ToReadableString());
我还尝试在RemoveFromRolesAsync 函数中将角色作为数组传递,但无济于事。
我没有看到任何其他方法可以从用户中删除角色。
更新
var roleResult = await _userManager
.IsInRoleAsync(
user,
requestRole.ToReadableString());
var roleResult2 = await _userManager
.IsInRoleAsync(
user,
"Administrator");
var roles = await _userManager
.GetRolesAsync(user);
var userResult = await _userManager
.RemoveFromRoleAsync(
user,
requestRole.ToReadableString());
roleResult 和 roleResult2 都是假的。
角色包含“管理员”。
如果我使用此用户登录,则该用户具有“管理员”角色。
所以授权属性说用户有这个角色:
[Authorize(Roles = "Administrator", AuthenticationSchemes = "Bearer")]
另一个测试:
var roles = await _userManager
.GetRolesAsync(user);
foreach (string role in roles)
{
var roleTempResult = await _userManager
.IsInRoleAsync(
user,
role);
}
方法 IsInRoleAsync() 为从 GetRolesAsync(user) 返回的所有角色返回 false;
那里发生了什么?
【问题讨论】:
-
您是否尝试过在尝试删除之前先检查用户是否处于角色中。
-
对于错误消息,它说用户不在
Administrator。您可以尝试检查用户是否具有requestRole角色。共享数据库中的记录。
标签: c# asp.net-core asp.net-core-identity