Laden...

Membership Provider LogOn Status setzen

Erstellt von tequila slammer vor 13 Jahren Letzter Beitrag vor 13 Jahren 939 Views
T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren
Membership Provider LogOn Status setzen

Hallo Forum,

für ein Projekt benutze ich einen eigenen Membership Provider für eine DB2 Datenbank. Ich habe mir schon die beiden Provider für MS SQL und MySql angesehen aber kein Antwort auf meine Frage finden können. Mir ist bekannt, dass ich in der ValidateUser-Methode via SQL Befehl den LogOn Status setzen kann. Somit kann ich bestimmen, dass der User angemeldet ist. Aber wo ist das Pendant dazu? Wie oder mit welcher Methode wird der Status wieder zurückgesetzt?

mfg Tequila

16.834 Beiträge seit 2008
vor 13 Jahren

Hallo,

der MembershipProvider ist nicht fürs Ausloggen zuständig.

Das sollte über

FormsAuthentication.SignOut(); 
HttpContext.Current.Session.Abandon(); 

laufen.

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

Hm. Dann habe ich zwei Fragen.

Wie ändern die genannten Methoden denn meinen Status in der Datenbank? Das können sie meiner Meinung nach nicht. Der User wäre quasi immer angemeldet.

Wie würdest du dann Authentifizierung für einen WCF Service umsetzten? Da das Membership Model dann ja nicht durchgängig nutzbar ist.

D
615 Beiträge seit 2009
vor 13 Jahren

Hallo tequila slammer

Du könntest bspw. folgende Events benutzen :

Wie ändern die genannten Methoden denn meinen Status in der Datenbank? Das können sie meiner Meinung nach nicht. Der User wäre quasi immer angemeldet.

Warum über die Datenbank ?

Global.asax :


  void Session_Start(object sender, EventArgs e)
    {
        // Code that runs when a new session is started
        Application.Lock();
        Application["CurrentOnlineUsers"] = (int)Application["CurrentOnlineUsers"] + 1;
        Application.UnLock();
    }

  void Session_End(object sender, EventArgs e)
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.
        Application.Lock();
        Application["CurrentOnlineUsers"] = (int)Application["CurrentOnlineUsers"] - 1;
        Application.UnLock();

        Session.RemoveAll();

    }

Wie würdest du dann Authentifizierung für einen WCF Service umsetzten? Da das Membership Model dann ja nicht durchgängig nutzbar ist. 

Prüfen ob ein User eingeloggt ist bevor man die Methode aufruft ?! Verstehe ich die Frage falsch ? 😃

Beste Grüsse

Diräkt

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

Ich habe jetzt angefangen es mit einem Helper zu lösen, der mir dann den Status wieder verändert.