我在一个非常简单的Spring Boot应用程序中登录后得到了404。这是因为我在我的configureAuth方法中添加了密码编码器。有人能帮助我吗?
这是我的安全配置代码:
@Configuration
@EnableGlobalAuthentication
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Autowired
public void configureAuth(final AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().passwordEncoder(passwordEncoder()).dataSource(dataSource).withDefaultSchema()
.withUser("admin").password(passwordEncoder().encode("admin123")).roles("USER", "ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().formLogin().and().httpBasic().and().csrf().disable()
.headers().frameOptions().disable();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
没有异常或其他错误。显示带有404的简单whitelabel错误页面。
编辑:登录表单即将出现,但我认为身份验证有问题。
谢谢你, 基督教
答案 0 :(得分:1)
您必须为我认为的登录表单配置请求。 Reference
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login");
}
从它看起来,指定.loginPage
很重要。我正在为我的项目使用以下配置。
http.
.authorizeRequests().antMathcers("/login-page", "/login", "/successful-login", "/error-login").anonymous().and()
.formLogin()
.loginPage("/login-page")
.defaultSuccessUrl("/successful-login")
.loginProcessingUrl("/login")
.failureUrl("/error-login")
.permitAll()
.loginProcessingUrl
我相信处理登录POST请求的URL。
我也在我的SecurityConfig类上使用@EnableWebSecurity
注释,
答案 1 :(得分:0)
我的案子...
- 运行正常
antMatchers(“ / admin / **”)
- 这样更改后失败了
antMatchers(“ / admin / xxx”,“ / admin / yyyy”,“ / admin / zzz”)
- 解决方案是像这样添加loginProc URL
antMatchers(“ / admin / xxx”,“ / admin / yyyy”,“ / admin / zzz”,“ / admin / loginProc”)