首页 > 解决方案 > Spring Security:AuthenticationProvider 和 UserDetailsS​​ervice 之间的链接

问题描述

在一些 Spring Security 代码中,我可以看到:

@Override
public void configure(AuthenticationManagerBuilder auth) {
    auth.userDetailsService(myUserDetailsService);
}

据我了解,AuthenticationManager管理一个列表AuthenticationProvider 并且每个AuthenticationProvider都有自己的UserDetailsService实现。

这是上面的代码不明白的地方:写的时候auth.userDetailsService(...)AuthenticationProvider用的是哪个?是否创建了一个新的?因为 and 之间有直接联系AuthenticationManagerUserDetailsService但没有关于AuthenticationProvider

标签: springspring-security

解决方案


当你这样做时,auth.userDetailsService(myUserDetailsService);你正在添加一个DaoAuthenticationProvider使用你UserDetailsService提供的新的。

更具体地说,在调用该AuthenticationManagerBuilder#userDetailsService方法时,您正在设置defaultUserDetailsService属性并应用 type 的配置DaoAuthenticationConfigurer

然后,此配置将添加到可以使用DaoAuthenticationProvider的列表中。AuthenticationProvider

AuthenticationManagerBuilder 您可以在源代码中找到更多详细信息。


推荐阅读