In einer ASP.net Anwendung Ich bin mit einem Login-Steuerelement mit einem benutzerdefinierten Mitgliedschaft Anbietern, die ich geschrieben habe. Was ich tun möchte, ist zu meinem benutzerdefinierten Principal-Objekt, gleich nachdem der Benutzer authentifiziert ist.Wie wird Thread.CurrentPrincipal für die Verwendung in der gesamten Anwendung festgelegt?
Ich verwende den Setter: Thread.CurrentPrincipal
und es legt das Principal-Objekt für mich, aber auf allen folgenden Threads wird dieses CurrentPrincipal mit dem Standard überschrieben.
Hier ist mein Code für das Authentifizieren Ereignis der Login-Steuerelement:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
string username = Login1.UserName;
string password = Login1.Password;
if (Membership.ValidateUser(username, password))
{
var login = sender as Login;
var phoenixIdentity = new PhoenixIdentity("B", "Forms" , true);
var principal = new PhoenixPrincipal(phoenixIdentity);
Thread.CurrentPrincipal = principal;
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
HttpContext.Current.User = principal;
e.Authenticated = true;
}
}
Zum Beispiel vorstellen, dass ich mit dem Benutzernamen A anmelden, alles gut geht ... geht Validierung, aber ich hart codieren den Benutzer mit dem Benutzernamen B im Identity-Objekt, das auf das Hauptziel gesetzt ich als CurrentPrincipal
Objekt festgelegt.
Wenn ich überprüfen, welche Benutzer auf die CurrentPrincipal
Identität am Ende dieses Verfahrens heißt es aber Benutzer B gesetzt ist es, wenn ich eine andere Seite laden und dann überprüfen, was die Identität des CurrentPrincipal
ist, sagt sie es Benutzer A ist
Also, wie kann ich mein CurrentPrincipal
Objekt dauerhaft über alle anderen Threads machen, und wo/wann setzt dieses Login-Steuerelement das CurrentPrincipal
Objekt des Threads?
Was machst du? Möchten Sie, dass jeder als der erste angemeldete Benutzer identifiziert wird? Sie müssen die Mechanismen der Authentifizierung und Autorisierung von Webanwendungen, die Verwendung von Cookies usw. verstehen. Sie können keinen Hauptbenutzer für alle Mehrbenutzer-App-Threads festlegen. –
Natürlich nicht. Vielleicht habe ich mich nicht deutlich genug ausgedrückt. – Goran