gpt4 book ai didi

asp.net-mvc - 从 ASP.NET Identity 2.x 中的角色中删除用户

转载 作者:行者123 更新时间:2023-12-03 04:40:36 25 4
gpt4 key购买 nike

如何从 ASP.NET Identity 2.x 中的角色中删除用户?关于向用户添加角色没有问题,但是当我想从用户中删除角色时却不能。应该提到的是,没有异常或错误!

//POST: Admin/User/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Prefix = "")]UserViewModel userViewModel, List<int> availableRoles)
{
if (ModelState.IsValid)
{
List<int> newListOfRolesIDs = availableRoles;
List<int> oldListOfRolesIDs = UserBLL.Instance.GetRolesIDs(userViewModel.Id);
List<int> deletedList;
List<int> addedList;
var haschanged = oldListOfRolesIDs.ChangeTracking(newListOfRolesIDs, out deletedList, out addedList);
using (new EFUnitOfWorkFactory().Create())
{
if (haschanged)
{
UserBLL.Instance.InsertRoles(addedList, userViewModel.Id);
UserBLL.Instance.DeleteRoles(deletedList, userViewModel.Id);
}
await UserBLL.Instance.UpdateAsync(userViewModel);
}
//ArticleBLL.Instance.UpdatePartial(articleViewModel, m => m.Title);
return RedirectToAction("Edit");
}
return View(userViewModel);
}

删除角色方法:

public void DeleteRoles(List<int> deleteList, int? userId)
{
if (userId != null)
{
User user = UserManager.FindByIdAsync(userId.Value).Result;
foreach (var i in deleteList)
{
user.Roles.Remove(new UserRole { RoleId = i, UserId = user.Id }); // What's the problem?!
}
}
}

插入角色方法:

public void InsertRoles(List<int> insertList, int? userId)
{
if (userId != null)
{
User user = UserManager.FindByIdAsync(userId.Value).Result;
foreach (var i in insertList)
{
user.Roles.Add(new UserRole { RoleId = i, UserId = user.Id });
}
}
}

最佳答案

您正在寻找的是RemoveFromRoleAsync方法。示例类似于以下内容:

public async Task DeleteRolesAsync(List<string> deleteList, int? userId)
{
if (userId != null)
{
foreach (var roleName in deleteList)
{
IdentityResult deletionResult = await UserManager.RemoveFromRoleAsync(userId, roleName);
}
}
}

如果您已经拥有用户的 ID,则无需再次获取该用户(仅当您想确保该用户确实存在时;然后您必须使用 if 语句包装您的 foreach)。删除方法需要角色的名称,而不是 ID,才能从角色中删除用户。您可以使用操作结果(在我的示例中存储在deletionResult 中)来确保操作成功。请记住,用户管理器的名称(在我的示例中UserManager)可能会根据您的实现而有所不同。

关于asp.net-mvc - 从 ASP.NET Identity 2.x 中的角色中删除用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28057077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com