Как изменить имя пользователя для текущего пользователя в Spring Security 3.1?

У меня есть требование, чтобы каждый пользователь мог изменить свое имя пользователя, пока он остается в системе. Проблема в том, как обновить имя пользователя (Principal) в токене аутентификации Spring Security? (

Я должен обновить его, потому что я использую имя prinicpal из токена аутентификации для идентификации пользователя в некоторых случаях использования в бизнесе.)

Я использую форму, основанную на cookie, и запоминаю учетную запись для меня, поэтому мои токены аутентификацииUsernamePaswordAuthenticationToken а такжеRememberMeAuthenticationToken, У обоих есть полеprincipal где хранится логин. К сожалению, эта переменнаяfinal, поэтому я не могу изменить его значение.

Кто-нибудь знает, как Spring Security рекомендует изменитьPrincipal в токене аутентификации?

Мой текущий обходной путь заключается в том, что я заменилUsernamePaswordAuthenticationToken а такжеRememberMeAuthenticationToken с подклассами, которые имеют дополнительное не конечное главное поле и переопределяютgetPrincipal() метод для возврата этого дополнительного принципала вместо исходного. Затем я также разделил два класса, которые генерируют эти токены, для создания моих токенов вместо исходного. --- Но я чувствую, что это большой взлом.

Ответы на вопрос(3)

Ваш ответ на вопрос