我需要實現(xiàn)一個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
提交
取消