У меня есть требование, чтобы каждый пользователь мог изменить свое имя пользователя во время входа в систему. Проблема заключается в том, как обновить имя пользователя (Principal) в Spring токене аутентификации безопасности?
(Я должен обновить его, потому что я использую имя prinicpal из токена аутентификации, чтобы идентифицировать пользователя в некоторых случаях использования в бизнесе.)
Я использую основанную на форме и cookie память для входа в систему, поэтому мои токены аутентификации UsernamePaswordAuthenticationToken и RememberMeAuthenticationToken. Оба имеют поле Principal, где хранится имя входа. К сожалению, эта переменная final, поэтому я не могу изменить ее значение.
Кто-нибудь имеет представление о том, как Spring Security рекомендует изменить Principal в токене аутентификации?
Мой текущий рабочий стол заключается в том, что я заменил подклассы UsernamePaswordAuthenticationToken и RememberMeAuthenticationToken подклассами, у которых есть дополнительное не окончательное основное поле и переопределить метод getPrincipal(), чтобы вернуть этот дополнительный главный, а не оригинальный. Затем я также подклассифицировал два класса, которые генерируют эти токены для создания моих токенов вместо исходного. --- Но я чувствую, что это большой взлом.