Ich habe Schwierigkeiten, "Remember Me" -Funktionalität in einer MVC-Anwendung mit einem benutzerdefinierten Prinzipal zu implementieren. Ich habe es auf ASP.NET heruntergebrannt, nicht den Authentifizierungscookie für mich abrufend. Ich habe unten einen Schnappschuss von Google Chrome aufgenommen.
Zeigt die Ergebnisse von Request.Cookies an, die innerhalb der Controller-Aktion festgelegt und in ViewData für die Ansicht zum Lesen abgelegt werden. Beachten Sie, dass das .ASPXAUTH-Cookie
Zeigt die Ergebnisse der Chrome-Entwicklungstools an. Sie können sehen, dass .ASPXAUTH hier enthalten ist.
Alternativtext http://i50.tinypic.com/ibctjd.png
Weiß jemand, was das Problem hier sein könnte? Warum liest ASP.NET diesen Wert nicht aus der Cookie-Sammlung?
Meine Anwendung verwendet ein benutzerdefiniertes IPrincipal. BusinessPrincipalBase ist ein CSLA-Objekt, das IPrincipal von UST implementiert. Hier ist der Code dafür:
%Vor%Die Anwendung verwendet auch einen benutzerdefinierten Mitgliedschaftsanbieter. Hier ist der Code dafür.
%Vor%Ich glaube nicht, dass irgendetwas davon zusammenhängt, denn unter dem Strich liefert Request.Cookies das Authentifizierungs-Cookie nicht zurück. Bezieht es sich auf die Größe des Cookies? Ich habe gehört, dass es Probleme mit der Größe des Kekses gibt.
UPDATE: Es scheint, dass sich das Problem um Subdomains dreht. Diese Site wurde mit einer Subdomain gehostet und die Cookie-Domain wurde leer gelassen. Hat jemand irgendwelche Hinweise darauf, wie ich den Authentifizierungs-Cookie dazu bringen kann, mit allen Domänen zu arbeiten (zB Ссылка , Ссылка und Ссылка )?
hast du das auch überprüft?
ASPXAUTH Cookie wird nicht gespeichert
Ich bin mir nicht sicher, ob das der Grund dafür wäre, dass der Cookie in Chrome auftaucht, aber nicht tatsächlich an den Browser weitergegeben wird oder ob er das Speichern des Cookies verhindern würde, aber auch einen Blick wert ist.
Wenn Sie versuchen, das eigentliche Benutzerobjekt im Cookie selbst zu speichern, ist es wahrscheinlich zu groß, um es als Cookie zu speichern. Ich bin nicht zu mit den MVC-Authentifizierungskram vertraut, aber in Webformularen mache ich generell folgendes:
%Vor%Der zweite Parameter ist für die Persistenz, nach der Sie suchen.
Von dort erstelle ich einen benutzerdefinierten Kontext (UserContext), den ich über HttpModule auffüllen kann, der mir Zugriff auf alle Benutzer- und Rolleninformationen gibt.
Da ich mich in MVC (noch) oder CSLA nicht entwickle, bin ich mir nicht sicher, wie viel mehr ich sein kann. Wenn ich Sie wäre, würde ich auch den benutzerdefinierten Mitgliedschaftsanbieter ablehnen. Sie können auch einfach MoralePrincipal.Login direkt in Ihrem Authentifizierungs-Controller aufrufen.
Die rememberMe-Elemente sollten von FormsAuthenticationService (in MVC2) oder der statischen FormsAuthentication-Klasse in MVC1 festgelegt werden, wenn Sie den regulären AccountController-Code verwenden. Wenn Sie diesen Code geändert haben, haben Sie daran gedacht, den (optionalen) booleschen Parameter hinzuzufügen, der angibt, ob ein persistenter Cookie verwendet werden soll oder nicht?
Es klingt für mich so, als ob Sie einen Session-Cookie erhalten, aber keinen dauerhaften Cookie.
Tags und Links asp.net-mvc asp.net cookies