Spring Security

时间:2017-07-04 14:53:52

标签: java spring-security

如果我没有误解,AuthenticationProvider使用UserDetailsService来检索用户的属性,以便对Authentication对象进行身份验证。

问题是,在下一个代码中,AuthenticationProvider的{​​{1}}没有配置。

UserDetailsService

但是已经设置了身份验证服务。

我的问题是,是否有@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("user").password("pass").roles("ADMIN").and().withUser("user1") .password("pass").roles("USER"); } 的实施和AuthenticationProvider的另一个实施内部添加到春天背景中?在这种情况下,使用的是什么(在memoryAuthentication的情况下)。

配置的UserDetailsService部分是否代表*.withUser("user").password("pass").roles("ADMIN")*实施?

1 个答案:

答案 0 :(得分:3)

是的,对于这样的配置,AuthenticationProviderUserDetailsService bean是隐式配置的。

.inMemoryAuthentication()将Spring Security配置为使用InMemoryUserDetailsManager(间接)实现UserDetailsService接口,因此它本身就是UserDetailsService

默认情况下,

DaoAuthenticationProvider用作AuthenticationProvider inMemoryAuthentication()

.withUser("user").password("pass").roles("ADMIN")配置InMemoryUserDetailsManager已知的用户。这可以用于填充您想要用于登录的用户。

还有一件事:并非所有AuthenticationProvider都使用UserDetailsService来获取用户详细信息。实际上,在标准AuthenticationProvider实施中,只有DaoAuthenticationProvider类使用UserDetailsService

相关问题