为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Security - 检索当前尝试登录的用户的用户名

Spring Security - 检索当前尝试登录的用户的用户名

收到一只叮咚 2019-04-18 14:15:15
我需要实现一个PasswordEncoder生成盐渍密码的方法。盐是用户特定的(UUID)并存储在相应的User对象中。因此,我需要访问User直接或UserDetails持有引用的对象。很容易检索如果我有用户试图登录的名称。这就是问题所在。我似乎无法掌握它。就SecurityContext我们而言,我们仍在处理一个问题anonymousUser。我知道UsernamePasswordAuthenticationToken在某个地方应该躺着,但是我不能注意它,因为它不是豆子。要定义一个包含它的包装器bean,我需要先找出它在哪里找到它。如何获取尝试登录的用户的名称?非常感谢帮助。:)(旁注:请不要建议我“不要那样做”或者移植密码并开始使用BCryptPasswordEncoder这些或类似的东西。这是我们非常希望在将来某个时候做的事情,但暂时是不允许的。)
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您将无法单独执行此操作,PasswordEncoder因为抽象假定您可以仅使用纯文本密码对密码进行编码(或使用散列密码进行比较)。但是,如果您使用自定义AuthenticationProvider(调用它PasswordEncoder),您将可以访问Authentication包含用户名的传入对象。更多信息在这里


查看完整回答
反对 回复 2019-05-15
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

调用PasswordEncoder.matches(...)是通过additionalAuthenticationChecks(...)方法获得的DaoAuthenticationProvider,该方法可以访问用户名value(principal)。

如果需要访问它,则需要子类化DaoAuthenticationProvider并覆盖(替换)该方法,并确保Spring在配置时使用您的子类。


查看完整回答
反对 回复 2019-05-15
  • 2 回答
  • 0 关注
  • 610 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信