Laden...

HttpContext verliert User-Property

Erstellt von boco25 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.141 Views
B
boco25 Themenstarter:in
483 Beiträge seit 2005
vor 16 Jahren
HttpContext verliert User-Property

Hallo!

Ich habe ein Problem mit dem HttpContext. Aufgrund einer erweiterten Authentifizierungsmethode, welche auf dem Memberprovider-Konzept von Microsoft aufsetzt möchte ich einen neuen User im HttpContext speichern und auf diesen neuen User auf einer anderen Seite zugreifen. Dies ist momentan leider nicht möglich, da der User beim Redirect „verloren“ geht.

relevanter Codeausschnitte:

  string[] a = { "Test-Rolle" };  
        System.Security.Principal.IIdentity i = new System.Security.Principal.GenericIdentity("Test-User", "Forms");  
        System.Security.Principal.IPrincipal p = new System.Security.Principal.GenericPrincipal(i, a);  
        HttpContext.Current.User = p;  

        HttpContext.Current.Response.Redirect("B.aspx");  

Was mache ich falsch?

Danke schon einmal im Vorraus für eure zahlreichen Antworten.

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo boco25

Der HttpContext speichert den aktuellen User in einer privaten Instanzvariable.
Nach Durchlaufen eines Request wird diese zurückgesetzt bzw. der ganze Context.
Nach dem Response.Redirect() oder auch nur einem erneuten GET Aufruf der Seite, musst du den User neu setzen.

Stichworte: Session, Cookie.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

B
boco25 Themenstarter:in
483 Beiträge seit 2005
vor 16 Jahren

Hallo Peter

Ersteinmal vielen Dank für die schnelle Antwort! Leider habe ich mich scheinbar etwas missverständlich ausgedrückt. Ich möchte eine Anmeldung von einer externen Web Site über ein Login Control auf eine andere unabhängige Web Site, welche einen Membership Provider verwendet, realisieren. Hierzu ist es nun erforderlich den User händisch zu setzen um über das Membership Objekt Zugriff darauf zu erhalten. Ich benötige quasi idealerweise eine Methode Membership.SetUser(name, roles[]). Da diese leider nicht existiert und ich auch nicht weiß wie Microsoft dies in ihrem Membership Provider löst, habe ich dies über den HttpContext-User versucht. Dies führte jedoch nur temporär zum gewünschten Ergebnis (dem Zugriff über auf den User über das Membership-Objekt).

Die Frage sollte also besser lauten:
Wie kann ich den aktuellen User dauerhaft dem Membership-Objekt zuweisen?

In der Session speichert das MembershipProvider eigene Konzept nichts und auch Cookies konnte ich keine finden.

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo boco25

Okay, das ist ja ganz was anderes.
Sowas geht meines Wissens out-of-the-box nicht, da braucht es einigen Aufwand.
Du musst die Informationen auf jeden Fall entweder per POST oder GET austauschen, Sessions und Cookies alleine fallen auch weg.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011