我需要实现一个PasswordEncoder生成盐渍密码的方法。盐是用户特定的(UUID)并存储在相应的User对象中。因此,我需要访问User直接或UserDetails持有引用的对象。很容易检索如果我有用户试图登录的名称。这就是问题所在。我似乎无法掌握它。就SecurityContext我们而言,我们仍在处理一个问题anonymousUser。我知道UsernamePasswordAuthenticationToken在某个地方应该躺着,但是我不能注意它,因为它不是豆子。要定义一个包含它的包装器bean,我需要先找出它在哪里找到它。如何获取尝试登录的用户的名称?非常感谢帮助。:)(旁注:请不要建议我“不要那样做”或者移植密码并开始使用BCryptPasswordEncoder这些或类似的东西。这是我们非常希望在将来某个时候做的事情,但暂时是不允许的。)
2 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
调用PasswordEncoder.matches(...)
是通过additionalAuthenticationChecks(...)
方法获得的DaoAuthenticationProvider
,该方法可以访问用户名value(principal
)。
如果需要访问它,则需要子类化DaoAuthenticationProvider
并覆盖(替换)该方法,并确保Spring在配置时使用您的子类。
添加回答
举报
0/150
提交
取消