676 Stimmen

ASP.NET MVC - Benutzerdefinierte IIdentity oder IPrincipal festlegen

Ich brauche, um etwas ziemlich einfach: in meinem ASP.NET MVC-Anwendung zu tun, möchte ich eine benutzerdefinierte IIdentity / IPrincipal festlegen. Je nachdem, was einfacher / besser geeignet ist. Ich möchte den Standard erweitern, so dass ich etwas wie aufrufen kann User.Identity.Id y User.Identity.Role . Nichts Ausgefallenes, nur ein paar zusätzliche Eigenschaften.

Ich habe tonnenweise Artikel und Fragen gelesen, aber ich habe das Gefühl, dass ich es mir schwerer mache, als es eigentlich ist. Ich dachte, es würde einfach sein. Wenn sich ein Benutzer anmeldet, möchte ich eine benutzerdefinierte IIdentity festlegen. Also dachte ich, ich werde implementieren Application_PostAuthenticateRequest in meiner global.asax. Das wird jedoch bei jeder Anfrage aufgerufen, und ich möchte nicht bei jeder Anfrage einen Aufruf an die Datenbank durchführen, der alle Daten aus der Datenbank anfordern und in ein benutzerdefiniertes IPrincipal-Objekt einfügen würde. Das scheint auch sehr unnötig, langsam, und an der falschen Stelle (tun Datenbankaufrufe dort), aber ich könnte falsch sein. Oder woher sollten die Daten sonst kommen?

Also dachte ich mir, dass ich jedes Mal, wenn sich ein Benutzer anmeldet, einige notwendige Variablen in meiner Sitzung hinzufügen kann, die ich der benutzerdefinierten IIdentity in der Application_PostAuthenticateRequest Ereignisbehandler. Allerdings ist mein Context.Session es null Das ist also auch nicht der richtige Weg.

Ich arbeite jetzt seit einem Tag daran und habe das Gefühl, dass mir etwas fehlt. Das sollte doch nicht allzu schwer zu machen sein, oder? Ich bin auch ein bisschen verwirrt von all den (halb)verwandten Sachen, die damit verbunden sind. MembershipProvider , MembershipUser , RoleProvider , ProfileProvider , IPrincipal , IIdentity , FormsAuthentication .... Bin ich der Einzige, der das alles sehr verwirrend findet?

Wenn mir jemand eine einfache, elegante und effiziente Lösung sagen könnte, um einige zusätzliche Daten auf einer IIdentity ohne all die zusätzlichen Unschärfen zu speichern das wäre großartig! Ich weiß, es gibt ähnliche Fragen auf SO, aber wenn die Antwort, die ich brauche, ist in dort, muss ich übersehen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X