我查看了DaoAuthenticationProvider
的来源,我在retrieveUser
方法中发现了一些看起来很奇怪的东西。
如果userDetailService
引发了UserNameNotFoundException
,则以下代码位于catch
:
catch (UsernameNotFoundException notFound) {
if (authentication.getCredentials() != null) {
String presentedPassword = authentication.getCredentials().toString();
passwordEncoder.isPasswordValid(userNotFoundEncodedPassword,
presentedPassword, null);
}
throw notFound;
}
我不明白为什么它会调用passwordEncoder.isPasswordValid
。它不会将它用于任何东西,然后再次在链中抛出异常。据我所知,passwordencoder
不会抛出任何异常,它会返回boolean
(这似乎不会用于任何事情)。
有人有任何想法吗?
答案 0 :(得分:0)