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