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