Ich habe eine Webanwendung mit Federsicherheit entwickelt. Für den Login erhält er Zugriff von LDAP. Jetzt möchte ich die Sitzung mit Feder Sicherheit selbst verwalten, kann ich sehen, indem ich authentication.getName()
Ich bekomme die username
und ich kann auch die sessionID
bekommen.Sitzungsverwaltung mit Spring Security: Concurrent-Sitzungen
Jetzt möchte ich sicherstellen, wenn der gleiche Benutzer versucht, sich vom selben System mit einem anderen Browser einzuloggen, sollte er eine Nachricht erhalten, die besagt, dass er sich bereits in seinem Konto eingeloggt hat.
Kann jemand eine Idee geben, wie man das erreicht ????
<security:session-management
invalid-session-url="/login.jsp?error=sessionExpired"
session-authentication-error-url="/login.jsp?error=alreadyLogin">
<security:concurrency-control
max-sessions="1"
expired-url="/login.jsp?error=sessionExpiredDuplicateLogin"
error-if-maximum-exceeded="false" />
</security:session-management>
Wenn ich diese verwenden und versuchen, unter Verwendung eines anderen Browser um sich einzuloggen es mir die folgende Störung gibt:
HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
enter code here
Ich habe die fsame Konfiguration, wie Sie vorschlagen. Plus JdbcTokenRepositoryImpl. Mit all dem logge ich mich mit einem Browser ein; und dann melde ich mich wieder mit einem anderen an. Es scheint, dass der zweite eingeloggt ist, und es ist in der Tat. Mein Problem ist, klicke ich einen Link aus dem ersten Browser bekomme ich die folgende Ausnahme: 'Estado HTTP 500 - PreparedStatementCallback; schlechte SQL-Grammatik [delete from persistent_logins wo username =?]; [blah blah]: Tabelle 'gbt.persistent_logins' existiert nicht '. Und der Tisch ist tatsächlich aus der DB verschwunden !!! Hat jemand eine Idee von dem, was vor sich geht? – kazbeel