Serverzugriffe auf Projekt erfassen und Verwalten

19/03/2009 - 10:08 von Michael Engel | Report spam
Hallo zusammen.

Ich habe ein Projekt in VS 2005 erstellt.
Das Projekt startet mit einer LogIn-Seite. Wenn ein Benutzer die Seite
aufruft, kommt der Anmeldedialog. Er muss dort Username und PW eingeben.
Diese sind in einer Datenbank hinterlegt. Das klappt soweit auch. Ich möchte
jetzt aber verhindern, dass sich mehrerer Benutzer mit dem gleichen Username
und Passwort anmelden.

Ich dachte daran die Serverzugriffe zu lesen? Habe aber leider keine Ahnung
wie das funktioniert.

Oder es gibt evt. auch eine bessere Möglichkeit?
Bin über jeden Vorschlag dankbar.

Gruß Micha
 

Lesen sie die antworten

#1 Thomas Bandt
19/03/2009 - 10:26 | Warnen spam
Michael Engel schrieb:
Hallo zusammen.

Ich habe ein Projekt in VS 2005 erstellt.
Das Projekt startet mit einer LogIn-Seite. Wenn ein Benutzer die Seite
aufruft, kommt der Anmeldedialog. Er muss dort Username und PW eingeben.
Diese sind in einer Datenbank hinterlegt. Das klappt soweit auch. Ich möchte
jetzt aber verhindern, dass sich mehrerer Benutzer mit dem gleichen Username
und Passwort anmelden.

Ich dachte daran die Serverzugriffe zu lesen? Habe aber leider keine Ahnung
wie das funktioniert.

Oder es gibt evt. auch eine bessere Möglichkeit?



Noch nicht umgesetzt, aber so sollte es zuverlàssig
funktionieren:

Du hàltst in einer Application-Variable (Initialisierung
in Application_Start in Global.asax) eine Liste aller
aktiven Benutzer, es reicht die ID:

Application["ActiveUsers"] = new List<Guid>();

Wenn sich ein Benutzer einloggt, überprüfst du zunàchst
ob dieser sich in dieser Liste befindet. Du kannst dir
dafür den User holen und das mit der ID (in dem Fall ne
Guid) machen, oder du speicherst in der List einfach den
Benutzernamen, erstmal egal.

Wenn er sich darin befindet, gibst du eine Fehlermeldung
aus und sagst, er soll sich erstmal wieder ausloggen, da
mehrfaches Einloggen nicht möglich ist.

Wenn er sich nicht darin befindet, loggst du ihn ein und
fügst die ID der Liste hinzu. Damit landet der nàchste
Loginversuch, solange er angemeldet ist, wieder in der
Fehlerbehandlung.

Wenn sich der User ausloggt (am besten Session_End und
beim aktiven Logout), schmeißt du die ID auch aus der
Liste.

Alternativ könntest du jeden Login erfolgreich durchführen
und im Anschluss den "alten" Login killen - das würde aber
bei jedem Request überprüfen, ob die aktuelle Sitzung noch
gültig ist, oder ob nicht jemand anderes inzwischen in dem
Userkontext online ist.

Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de - Die ASP.NET-Profis aus Nürnberg
http://blog.thomasbandt.de - Privates Blog

Ähnliche fragen