Nur ein User für Web Application

PollerJava

Top Contributor
Hallo,

es ist vielleicht etwar ungewöhnlich, aber wir möchten nur einen User für unsere Web- Application erlauben bzw. es können mehrere User die Web-Seite aufrufen aber es kann nur einer (der erste User) eine Button clicken, um etwas zu spechern. Alle anderen User sollen beim Aufruf der Seite verständigt werden (einfache HTML- Text- Ausgabe), dass sie den Button nicht drücken können und der Button sollte deshalb auch grau hinterlegt sein.

Meine Frage wäre jetzt, wie ich das am Besten machen kann -> hab schon lange nichts mehr mit einer Session gemacht aber soweit ich mich errinnern kann könnte es mit einer Session funktionieren, oder wie würdet Ihr das lösen?
lg
 
Ich bezweifel, dass man das über Sessions regeln kann, zumindest wüsste ich nicht, ob man jede auslesen kann (habe aber auch wenig im EE bereich gemacht bisher). Ich würde einen Datenbankeintrag erstellen. Du musst halt darauf achten, dass der Eintrag nicht unbedingt zurückgesetzt wird. Deswegen würde ich den Zeitlich begrenzen (z.B. ne halbe stunde in die Zukunft und der aktuelle Benutzer, der die Rechte hat, sendet dann alle 10min bsp. mit Ajax dass er noch arbeitet.)
 
Im Servlet eine statische Variable (z.B. einen AtomicInteger) nutzen, bei jedem Request hochzählen, wenn über X (in diesem Falle 1) Button deaktivieren
 
Im Servlet eine statische Variable (z.B. einen AtomicInteger) nutzen, bei jedem Request hochzählen, wenn über X (in diesem Falle 1) Button deaktivieren

Wie gesagt, bin mit EE nicht sonderlich vertraut, aber kannst du dabei auch darauf reagieren, falls der Nutzer sich nicht sachgemäß abmeldet? Ansonsten kannst du ggf den Button einmal nutzen und dann nie wieder :lol: (außer man startet das ganze neu oder greift sonst wie ein 😛)
 
>> Musst halt einen Logout-Mechanismus bauen

Das wird nicht viel bringen, wenn jemand den Browser einfach so zumacht ohne sich auszuloggen!
 
Dann stell entsprechend den Timeout ein oder benutzt das onUnload-Ereignis 😀

Das mit der session- Timeout will auch nicht so richtig funktionieren, da dieses Timeout auch zieht, wenn der User noch nicht abgemeldet ist aber auch momentan nichts macht (keinen Button klickt -> also nicht mit dem Server kommuniziert).
Dass will ich ehrlichgesagt auch nicht, dass einer eine bestimmte Zeit nichts macht, und wenn er weitermachen möchte, dann geht es nicht mehr und er muss von vorne anfangen.
Oder meinst du ein anderes Timeout.
 
Nee meinte ich, kannst auch einen regelmäßigen Request per HttpXmlRequest abschicken um die Session aktiv zu halten oder eben beim schließen des Fensters einen Request schicken um den User automatisch abzumelden (falls er es noch nicht ist) - onUnload-Event.

Die Frage ist, was willst du bezwecken? Darf immer nur ein User gleichzeitig die Daten ändern? (klingt nach schlechtem Design) 😀

Zur Not kannst du auch die Session ID überprüfen und sehen ob es der selbe User ist, wenn nicht eine Meldung schicken. Aber um das Timeout / Abmelden Problem kommst du nicht herum. Außer sowas wie onUnload gibt es nichts wirklich Sicheres zum Überprüfen wann ein User weg ist.

Alternative wäre eventuell noch ein Long-Polling System (z.B. auf Basis von Welcome to CometD Project @ The Dojo Foundation | cometd.org ). Damit hast du einen relativ sicheren Weg um den Connection-Verlust zeitnah zu bemerken.
 

Zurück
Oben