2016-12-10 5 views
2

Friede sei mit euchalle Rollen von einem Benutzer MVC 5

Ich versuche, alle Rollen von einem Benutzer zu entfernen, um seine Rechte zu deaktivieren und zu verhindern, ihn ein paar Seiten aus erreichbar.

ich diese Methode fand eine Rolle zu entfernen und es funktionierte:

await UserManager.RemoveFromRoleAsync(userid, role); 

Wo Benutzer-ID die Benutzer-ID, die ich seine Erlaubnis deaktivieren möchten.

So verwende ich diesen Code alle Rollen aus dem gleichen Benutzer löschen

foreach (string role in roles) { 

await UserManager.RemoveFromRoleAsync(userid, role); 

} 

Aber ich blieb hier wie Rollen Id zu speichern, die in AspNetRoles Tabelle sind

string[] roles 

Jede Hilfe?

Oder gibt es eine andere Möglichkeit, alle Rollen von einem Benutzer zu löschen?

Ich verwende asp.net Identität Version 2

Antwort

9

Benutzermanager verfügt über eine Methode, die Task<IList<string>> GetRolesAsync(TKey userId)

die Rollen für den Benutzer Kosten

Und auch Task<IdentityResult> RemoveFromRolesAsync(TKey userId, params string[] roles) dass

Benutzer aus mehreren Rollen entfernen

so kombinieren die beiden zu erreichen, was Sie

wollen
var roles = await UserManager.GetRolesAsync(userid); 
await UserManager.RemoveFromRolesAsync(userid, roles.ToArray()); 
+0

Vielen Dank für Ihre schnelle Beantwortung .. Wenn ich die beiden Linien verwendet, die schrieb, ein Fehler der Fehlermeldung aufgetreten: kann nicht von IList konvertieren zu string, ich habe dieses Problem gelöst, indem ich away UserManager.RemoveFromRolesAsync (userid, roles.ToString()) verwendet habe; Aber die Rollen wurden nicht entfernt –

+0

Mein Fehler. Konvertiere die Rollen in ein String-Array. Der ursprüngliche Aufruf gibt eine Liste zurück, aber die zweite Methode benötigt ein Array. Ich hatte vergessen, es in ein Array umzuwandeln. Ich habe die Antwort aktualisiert, um Änderungen zu berücksichtigen. – Nkosi

+0

WORKED .. Vielen Dank! –

Verwandte Themen