diff --git a/docs/modules/ROOT/pages/servlet/authentication/session-management.adoc b/docs/modules/ROOT/pages/servlet/authentication/session-management.adoc index c6282e2351..0eb0f05f0d 100644 --- a/docs/modules/ROOT/pages/servlet/authentication/session-management.adoc +++ b/docs/modules/ROOT/pages/servlet/authentication/session-management.adoc @@ -589,6 +589,13 @@ public class MaximumSessionsPreventLoginTests { If you are using a customized authentication filter for form-based login, then you have to configure concurrent session control support explicitly. You can try it using the {gh-samples-url}/servlet/spring-boot/java/session-management/maximum-sessions-prevent-login[Maximum Sessions Prevent Login sample]. +[NOTE] +===== +If you are using a custom implementation of `UserDetails`, ensure you override the **equals()** and **hashCode()** methods. +The default `SessionRegistry` implementation in Spring Security relies on an in-memory Map that uses these methods to correctly identify and manage user sessions. +Failing to override them may lead to issues where session tracking and user comparison behave unexpectedly. +===== + == Detecting Timeouts Sessions expire on their own, and there is nothing that needs to be done to ensure that a security context gets removed.