加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:12:50 所属栏目:Java 来源:网络整理
导读:我要求每个用户在他登录时都可以更改自己的用户名.问题是如何更新 Spring Security的身份验证令牌中的用户名(Principal)? (我必须更新它,因为我使用身份验证令牌中的原始名称来识别某些业务用例中的用户.) 我使用基于表单和cookie rememeber我的登录,所以我
我要求每个用户在他登录时都可以更改自己的用户名.问题是如何更新 Spring Security的身份验证令牌中的用户名(Principal)?

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

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

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读