Wie erstelle ich ein ClaimsIdentity-Objekt für Asp.NET MVC 5?
Arbeite ich in einer .NET MVC 5-Anwendung. Ich will nicht zu Entity Framework. Ich möchte zur Authentifizierung an einer Datenbank RavenDB. Es sieht für mich, die ich ersetzen will, die UserManager
kommt mit der Konto-Controller. Ich denke, dass ich Sie umschreiben alle den UserManager Funktionen zur Arbeit mit meiner Datenbank, außer ich nicht verstehen, die ClaimsIdentity
Objekt.
In der SignInAsync
Methode, es ist ein Aufruf an UserManager.CreateIdentityAsync(...)
. Ich weiß, es gibt eine ClaimsIdentity
Objekt. Was ich nicht weiß ist, wie man eine "ClaimsIdentity" - Objekt auf meine eigenen.
Sehe ich, dass es hat 4 Eigenschaften Actor
BootstrapContext
Claims
und Label
. Ich weiß nicht, was diese Eigenschaften sind für, und ich weiß nicht, wie Sie richtig zu generieren. Ich nehme an, generieren Sie richtig ist wichtig, da es sich, wie das authentifizierungscookie aus.
Schaute ich auf die Erklärung der "ClaimsIdentity" - Objekt hieraber das hat nicht wirklich helfen, mich zu verstehen.
Wenn ich sehen könnte, der code für CreateIdentityAsync()
das würde wahrscheinlich helfen.
Wenn ich werde über das alles falsch ist, bitte lassen Sie mich wissen. Ansonsten, wenn jemand könnte mich in Richtung auf die Generierung des "ClaimsIdentity" - Objekt, das wäre hilfreich.
ClaimsIdentity identity = new ClaimsIdentity
{
Actor = ????,
BootstrapContext = ?????,
Claims = ?????,
Label = ?????
}
InformationsquelleAutor der Frage user1304444 | 2013-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht die folgenden link helfen können:
InformationsquelleAutor der Antwort Vlince
Ich denke, Sie "gehen über diese alle falsch". Die ASP.NET Identität-Framework entwickelt, mit steckbaren Persistenz im Auge. Die richtige Art und Weise zu ersetzen, dass RavenDB für EF ist NICHT zu ersetzen, die
UserManager
. Eher, es ist die Umsetzung einer ErsatzUserStore
. Also die Zeile in derAccountController
schafft, dass dieUserManager
ändern würde aus::
Wo die
RavenDBUserStore
wäre eine Klasse, die Sie schrieb, umgesetztIUserStore
IUserPasswordStore
und was andere *Shop-Schnittstellen, die Sie benötigt für Ihre Anwendung zu finden.Dieser Ansatz vermeidet Sie benötigen, zu verstehen und zu re-implementieren, alles in
UserManager
und sorgt dafür, dass Sie in der Lage, profitieren Sie von zukünftigen Verbesserungen derUserManager
von FRAUWeitere Informationen hierzu finden Sie in der Übersicht über die Benutzerdefinierten Storage-Anbieter für ASP.NET Identität und das Beispiel Die Implementierung einer Benutzerdefinierten MySQL ASP.NET Identität-Speicher-Anbieter. Sie sollten auch prüfen, den code der RavenDB.AspNet.Identität Nuget-Paket erstellt von David Boike erwähnt in seinem Antwort. Die Quelle ist auf github zu https://github.com/ILMServices/RavenDB.AspNet.Identity/tree/master/RavenDB.AspNet.Identity
InformationsquelleAutor der Antwort Jeff Walker Code Ranger
Hier ist was ich kam mit. Ich würde gerne wissen, ob dies der richtige Weg, um diese Aufgabe zu erfüllen.
Arbeiten in einem Standard-MVC5 website, ich ging auf das Konto Controller, und fand die
SignInAsync()
Funktion. Ich habe es angepasst wie folgt:Beachten Sie, dass dies erfordert auch eine änderung der
[HttpPost] Login
- Funktion, um den Benutzer aus meiner Datenbank anstelle derUserManager.FindAsync()
Funktion.Den LogIn/LogOff Teile von der Standard-Website scheint zu funktionieren, nach diesen Einstellungen. Ich lasse diese Antwort hier für eine Weile, bevor ich es akzeptieren, wenn jemand mir sagen kann, warum sollte ich das nicht tun, es auf diese Weise.
InformationsquelleAutor der Antwort user1304444
Erstellte ich eine RavenDB-Implementierung des neuen ASP.NET MVC 5 Identität und veröffentlicht es als NuGet-Paket. Dies könnte für Sie arbeiten.
http://www.nuget.org/packages/RavenDB.AspNet.Identity/
Es ist etwas, prerelease, aber ich bin mit es in einem realen Projekt.
Hier ist die GitHub-Projekt und ein kurze thread auf die RavenDB Diskussion Gruppe darüber.
InformationsquelleAutor der Antwort David Boike