/ / Verhindern mehrerer Anmeldungen auf einer Website in Play Framework - Java, Javascript, PlayFramework

Verhindern mehrerer Logins auf einer Website im Play-Framework - Java, JavaScript, Playframework

Ich arbeite mit Play am Design eines ProgrammsFramework für Java. Es ist eine Website, bei der sich Benutzer anmelden müssen und die verhindern muss, dass sich ein Benutzer bei einem bereits angemeldeten Konto anmeldet.

Wenn sich ein Benutzer anmeldet, wird der Benutzername in gespeichertder Cache (mit memcached). Wenn sich der Benutzer abmeldet, wird der Benutzername aus dem Cache entfernt. Wenn ein Anmeldeversuch für einen im Cache vorhandenen Benutzernamen durchgeführt wird, wird der Anmeldeversuch abgelehnt.

Beispielsweise meldet sich ein Benutzer mit dem Benutzernamen "joe" an. Jemand von einem anderen Computer versucht sich mit dem Benutzernamen "joe" anzumelden und dies wird abgelehnt, da "joe" bereits angemeldet ist.

Ganz einfach, es sei denn, ein Benutzer schließt seinen Browser-Tab und ist gesperrt, weil sein Benutzername noch im Cache vorhanden ist.

Also habe ich mit Javascript das Fenster eingefangen.onbeforeunload-Ereignis, um zu einer Route umzuleiten, auf der eine Java-Methode zum Löschen des Caches ausgeführt wird. Das Problem ist, dass window.onbeforeunload ausgelöst wird, wenn der Benutzer auf einen Link klickt oder die Seite neu lädt. Wenn der Benutzer die Seite erneut lädt, wird er abgemeldet oder wenn er auf einen Link auf der Website klickt, wird er abgemeldet. Gibt es eine Möglichkeit, dies zu verhindern?

Bearbeiten: Ich benutze Sicherheit.Authentifiziert, um sicherzustellen, dass Benutzer nur dann auf die Website zugreifen können, wenn sie eine Sitzung in ihrem Cookie haben. Ich habe einen BaseController, der den Controller erweitert, und alle meine Controller erweitern den BaseController (mit Ausnahme des Controllers, der die Anmeldeseite verwaltet), und der BaseController ist mit Anmerkungen versehen :

@Security.Authenticated(Secured.class)

Gesichert sorgt das, wenn jemand es versuchtWenn sie keine Sitzung haben, werden sie auf die Anmeldeseite umgeleitet. Sobald sie sich anmelden, wird ein Cookie mit der Sitzung erstellt und Secured ermöglicht ihnen den Zugriff auf die Seite.

Antworten:

0 für die Antwort № 1

Was ist mit der abgelaufenen Zeit im Cache? Um zu verhindern, dass ein Schlüssel gelöscht wird, selbst wenn der Benutzer noch aktiv ist, können Sie eine zusammengesetzte Aktion erstellen, die den Cache bei jeder neuen Anforderung aktualisiert.

Alberto