PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# CSharp Session Management



StefanRHRO
12.09.2009, 19:18
Hallo,

ich bin gerade dabei mich in CSharp einzuarbeiten, bisher gefällt mir das sehr gut obwohl ich ursprünglich aus dem PHP Bereich komme.

Jetzt hab ich da ein leichtes Verständnisproblem. Und zwar bastel ich an einer kleinen Applikation, welche ein Login Formular zur Verfügung stellen soll, wenn kein Nutzer angemeldet ist, ist einer angemeldet, soll der eigentliche Spaß beginnen. Die Nutzerdaten liegen in einer MySQL Datenbank und die Kommunikation zwischen Server und Klient passt auch schon nur halt wie gesagt, wie und wo ich speichern kann, wer gerade angemeldet ist und ob überhaupt jemand angemeldet ist, weiß ich grad net.

Wie könnte man das am Besten/Simpelsten lösen?

Beste Grüße Stefan

PS: Bevor jemand meckert, ja ist nen Cross Posting, aber manchmal hilfts. ;)

Zeroflow
12.09.2009, 19:44
Hi,

Ich bin da zwar auch kein experte, aber du könntest z.B in der Datenbank bei den Usern eintragen wer online ist und das hald immer abfragen...da hätte ich folgende ideen:

eigene "online" tabelle:
+: leicht abzufragen
-: user müssen immer korrekt ausloggen bzw. das programm muss sich immer korrekt abmelden

lastaction spalte in der user tabelle:
+: man kann ein timeout nehmen ab wann der user als offline gilt
-: man müsste lastaction immer aktualieren wenn der user was macht

oder hald ne mischung draus, eigene tabelle, und wer länger als z.B 15min ohne update drin is wird als offline angezeigt...da müsste sich der client hald immer beim server melden.

Je nach sicherheitslevel z.B nur ob der client verbunden ist, oder sogar mit nem challenge / respone verfahren wenns bisserl sicherer sein soll

StefanRHRO
12.09.2009, 19:53
Hy,

danke erstmal für deine Antwort an sowas habe ich auch schon gedacht. Muss halt nur sehen, was ich mache, wenn das Programm mal abstürzt.

Was genau meinst du mit Chalange / Response Verfahren?

Edit: Ha, Wikipedia hat mich denn mal aufgeklärt. ;)

Zeroflow
12.09.2009, 21:06
mjo das einfachste wäre hald dass der client sich alle X sekunden / minuten beim server melden muss damit er online bleibt, oder der server fragt mit einem einfachen challenge/response ding nach obs den client gibt

also z.B 1x in der minute bekommt jeder client eine frage, z.B 2 zahlen im paket, und er muss die addition zurückliefern, dann gilt er noch als online

EDIT: Sicherer wäre natürlich folgender Ablauf:

Server fordert Meldung an, Salt abcdefg
Client nimmt user+pass+salt (usernamepasswordabcdefg), macht draus nen Hash, und schick den an den Server
Server vergleicht den hash vom client mit dem hash den er berechnet hat für die jetzige meldung

und dann je nachdem client online/offline setzen in der liste

StefanRHRO
13.09.2009, 17:53
Ich werd wohl ähnlich vorgehen, wie bei Cookies im Web.

a=Zufallsstring, b=Saltwert (sollte auch zufällig generiert werden), sowie einem vom Server bekannten konstanten c=Saltwert (um Brutforcing vorzubeugen). a wird denn vom Clienten mitgeschleppt und nach x Minuten erneuert.