我正在尝试为我的API添加基本身份验证,其中将根据MongoDB中存储的凭据对用户进行身份验证。我想使用java配置而不是基于XML的配置。到目前为止,我所学到的是我必须通过扩展@Configuration
并覆盖WebSecurityConfigurerAdapter
方法来创建configure
。我可以通过addFilterBefore()
添加自定义过滤器。
但是如何在过滤器中获取Authentication
标头信息,如果用户通过身份验证,如何继续。我一直在谷歌搜索,但没有找到任何一个好的例子,可以帮助像我这样刚刚进入春季一周的新手。
是否有人有一个很好的教程或样本可以帮助我开始这个?提前谢谢。
答案 0 :(得分:0)
例如,您可以使用下一个解决方案。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().authenticationEntryPoint(getBasicAuthenticationEntryPoint());
}
@Bean
public BasicAuthenticationEntryPoint getBasicAuthenticationEntryPoint(){
BasicAuthenticationEntryPoint basicAuthenticationEntryPoint = new BasicAuthenticationEntryPoint();
basicAuthenticationEntryPoint.setRealmName("Basic Authentication");
return basicAuthenticationEntryPoint;
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userDetailsService)
.passwordEncoder(passwordEncoder());
}
它对我有用。但是您需要实现UserDetailsService接口。 Spring自动检查是用户身份验证的,如果没有,则尝试继续进行身份验证。