Supprimer un Utilisateur de Rôles dans ASP.NET Identité 2.x
Comment puis-je supprimer un Utilisateur de Rôles dans ASP.NET Identité 2.x ?
sur l'ajout de rôle de l'utilisateur, il n'y a pas de problème mais quand je veux supprimer un rôle d'un utilisateur je ne peux pas.Il convient de mentionner qu'il n'existe aucune exception ou une erreur!
//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);
}
Supprimer le Rôle de la méthode:
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?!
}
}
}
Insérer le Rôle de la méthode:
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 });
}
}
}
OriginalL'auteur Jahan | 2015-01-20
Vous devez vous connecter pour publier un commentaire.
Ce que vous cherchez est la RemoveFromRoleAsync méthode. Par exemple, ressembler à la suivante:
Si vous avez déjà l'ID de l'utilisateur, il n'y a pas besoin d'obtenir de l'utilisateur (uniquement si vous souhaitez vous assurer que l'utilisateur existe vraiment; ensuite, vous devez emballer votre foreach avec un if). La suppression des méthodes besoins le nom du rôle, de la place de l'ID, pour supprimer l'utilisateur le rôle. Vous pouvez utiliser le résultat de l'opération (dans mon exemple stockées dans deletionResult) afin de s'assurer que l'opération a réussi. Rappelez-vous que le nom de l'utilisateur du gestionnaire (dans mon exemple UserManager) peut varier en fonction de votre mise en œuvre.
OriginalL'auteur Horizon_Net
J'ai eu le même problème et ce que j'ai utilisé a été le
RemoveFromRolesAsync(string userId, params string[] rôles) Méthode
à partir de la UserManager.
En utilisant les noms de rôle dans une matrice.
Mais il a un problème c'est si l'utilisateur n'est pas dans l'un des rôles, dans le tableau, l'utilisateur ne sera pas supprimé de tous les rôles dans le tableau.
Tout ou rien.
Espère que cela aide
OriginalL'auteur The BitMaster
Vous voudrez peut-être consulter ce blog. L'ASP.NET l'équipe dispose d'un échantillon qui comprend l'ajout et la suppression de rôles à partir d'un utilisateur.
ASP.NET Identité 2.0: la Personnalisation des Utilisateurs et des Rôles
OriginalL'auteur Jesse McCulloch