[英]ViewComponent does not recognize AspNetCore.Identity "User"
[英]AspNetCore.Identity RemoveFromRoleAsync does not remove role from user
我正在使用 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
function 中將角色作為數組傳遞,但無濟於事。
我看不到任何其他方法可以從用戶中刪除角色。
更新
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);
}
對於從 GetRolesAsync(user) 返回的所有角色,IsInRoleAsync() 方法返回 false;
那里發生了什么事?
請
在“ AspNetRoles”表中查找正確的角色名稱
看起來是“ AspNetUserRoles”表中的角色用戶
從RemoveFromRoleAsync中的“ AspNetRoles”中指定角色名稱
您必須在 RemoveFromRoleAsync 方法中使用“RoleName”而不是“RoleId”。
await _userManager.RemoveFromRoleAsync(user,"Administrator");
我也遇到了這個確切的問題。
問題是我傳遞給所有這些函數的用戶不是一個完整的 IdentityUser。 它是 IdentityUser 的一個實例,具有正確的 Id、UserName 和 Email,但在之前的過程中檢索用戶時,其他值(如 NormalizedEmail、NormalizedUserName 和 PasswordHash)已被丟棄。
一旦我將檢索過程更改為不轉換從 GetUsersInRoleAsync 返回的用戶,(我一直在根據返回的用戶使用新的 IdentityUser 實例填充一個列表,並且只設置我需要的值。更改它以使用實際返回的填充列表用戶修復了問題),IsInRoleAsync 和 RemoveFromRoleAsync 按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.