Rollen von authentifizierten Benutzern speichern / zuweisen
Bin ich eine Website aktualisieren, verwenden Sie MVC und ich bin auf der Suche nach der besten Methode zum einrichten der Authentifizierung.
Zu diesem Zeitpunkt habe ich die log-in-abarbeitung von Active Directory: die überprüfung von Benutzername und Passwort, und dann die Einstellung "Auth" cookie.
Wie Speichere ich die Rolle des Benutzers Informationen, die zum Zeitpunkt der log-in, um für meine Controller zu sehen, die Rollen sind wie navigiert der user durch die Website?
[Authorize(Roles = "admin")]
Habe ich kein problem damit, eine Liste der Rollen aus dem Active Directory. Ich weiß nur nicht, wo Sie zu setzen, so dass die Controller werden Sie sehen.
InformationsquelleAutor der Frage Billy Logan | 2009-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Authentifizierung Ihrer Benutzer generieren Sie ein neues GenericPrincipal-Instanz. Der Konstruktor nimmt ein array von strings, die die Rollen für den Benutzer. Setzen Sie nun HttpContext.Aktuelle.Benutzer gleich die generische AUFTRAGGEBER und schreiben Sie den auth cookie, und das sollte es tun.
InformationsquelleAutor der Antwort Klaus Byskov Pedersen
Rollen Hinzugefügt, um die IPrincipal der HttpContext. Sie können erstellen Sie eine GenericPrincipal, analysieren Sie die Liste der Rollen, die im Konstruktor und legen Sie es als HttpContext.Benutzer. Das GenericPrincipal-wird dann erreichbar sein über
User.IsInRole("role")
oder die[Authorize(Roles="role")]
AttributEinen Weg, dies zu tun (in C#) ist das hinzufügen Ihrer Rollen als durch Komma getrennte Zeichenfolge in der Benutzer-Daten parameter beim erzeugen des Authentifizierungs-ticket
Dann auf die Rolle, die Liste Authentifizierung aus, ticket und erstellen Sie ein GenericPrincipal-von Ihrer Globalen.asax.cs
InformationsquelleAutor der Antwort David Glenn
Für diejenigen von Euch, die mit MVC 4 oder höher benötigen Sie, um Jaroslaw Waliszko Beratung bei der Nutzung von David Glenn Antwort:
"Ich habe es getestet in ASP.NET MVC 4, und ich schlage Application_PostAuthenticateRequest statt. Ansonsten ist die generische AUFTRAGGEBER werden außer Kraft gesetzt." – Jaroslaw Waliszko Sep 7 16:18
So, wie oben angegeben, alle Sie tun müssen ist, ersetzen Sie die Application_AuthenticateRequest-Methode-Namen mit Application_PostAuthenticateRequest, diese zu arbeiten. Arbeitete wie ein Charme für mich! Wenn ich durfte upvote Jaroslaw und David, ich würde.
InformationsquelleAutor der Antwort Gareth
Ich würde geneigt sein, einfach erstellen Sie eine benutzerdefinierte Rolle, die Anbieter. Beispiel hier:
http://www.danharman.net/2011/06/23/asp-net-mvc-3-custom-membership-provider-with-repository-injection/
InformationsquelleAutor der Antwort DanH
Konnte Sie nicht fallen, entweder in einer Genehmigung store manager Rolle oder finden (z.B. auf Codeplex) oder schreiben eine andere Rolle-Anbieter, der mit Active Directory zu erhalten die Gruppen Informationen?
Dies würde sparen Sie den Aufwand der Authentifizierung der Benutzer, die immer Ihre Rollen, und dann wieder vorbei, dass die Informationen in den Konstruktor, und würde alles für Sie automatisch als Bestandteil des Frameworks.
InformationsquelleAutor der Antwort Zhaph - Ben Duguid