1 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的猜測(cè)是正確的:) 您應(yīng)該AuthenticationManager正確配置。您引用的鏈接沒有明確表明這一點(diǎn)。
配置它的方法有很多種:顯式提供 的實(shí)現(xiàn)AuthenticationManager,或者配置將創(chuàng)建 的構(gòu)建器AuthenticationManager,或者AuthenticationManager通過 XML 進(jìn)行配置等。下面是配置它的多種可能方法中的 2 種。
1.提供自己的AuthenticationManager
對(duì)于某些真正的身份驗(yàn)證,您可以實(shí)現(xiàn)AuthenticationManager基于 LDAP 或 JDBC 的身份驗(yàn)證。為了演示這個(gè)想法,這里有一個(gè)虛擬實(shí)現(xiàn),足以使您的代碼運(yùn)行。
public class DummyAuthenticationManager implements AuthenticationManager {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// Dummy implementation. We don't check anything here.
return authentication;
}
}
在您SecurityConfiguration創(chuàng)建它的實(shí)例,如下所示:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return new DummyAuthenticationManager();
}
...
}
通過這些更改,您的代碼將運(yùn)行,并且您可以繼續(xù)逐步擴(kuò)展它。
2.使用AuthenticationManagerBuilder
AuthenticationManager您可以配置AuthenticationManagerBuilder將為您構(gòu)建AuthenticationManager所需的內(nèi)容,而不是實(shí)現(xiàn)。
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user1").password("password1").roles("USER").and()
.withUser("user2").password("password2").roles("USER").and()
.withUser("admin").password("password3").roles("USER", "ADMIN");
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManager();
}
...
}
通過這些更改,您的代碼將運(yùn)行,并且您可以繼續(xù)逐步擴(kuò)展它。例如,對(duì)于實(shí)際的東西,inMemoryAuthentication()您可以使用ldapAuthentication()或jdbcAuthentication()或其他一些配置器。
添加回答
舉報(bào)