微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何使用Spring Security 3.1更改当前用户的登录名?

我要求每个用户在他登录时都可以更改自己的用户名.问题是如何更新 Spring Security的身份验证令牌中的用户名(Principal)?

(我必须更新它,因为我使用身份验证令牌中的原始名称来识别某些业务用例中的用户.)

我使用基于表单和cookie rememeber我的登录,所以我的身份验证令牌是UsernamePaswordAuthenticationToken和RememberMeAuthenticationToken.两者都有存储登录名的字段主体.不幸的是,这个变量是最终的,所以我不能改变它的价值.

有人有一个想法,Spring Security如何建议更改认证令牌中的校长?

我目前的工作环境是,我替换了UsernamePaswordAuthenticationToken和RememberMeAuthenticationToken与具有另外未最终主要字段的子类,并覆盖getPrincipal()方法来返回这个附加主体而不是原始的.然后我还将生成这个令牌的两个类子类化,以创建我的令牌,而不是原来的令牌. —但是我觉得这是一个大黑客.

解决方法

为什么要使用令牌,即认证子类? Authentication.getPrincipal()不会在您的情况下返回UserDetails的实例吗?

如果您提供自己的UserDetails实现(一个具有setUsername()方法),而如果我正确理解您的大小写,则可以自由进行验证.

原文地址:https://www.jb51.cc/java/123146.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐