登录到弹出默认登录页面后,为什么会得到404?

时间:2016-08-12 08:34:35

标签: java spring spring-mvc spring-security

我在一个非常简单的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错误页面。

编辑:登录表单即将出现,但我认为身份验证有问题。

谢谢你, 基督教

2 个答案:

答案 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)

我的案子...

  1. 运行正常

antMatchers(“ / admin / **”)

  1. 这样更改后失败了

antMatchers(“ / admin / xxx”,“ / admin / yyyy”,“ / admin / zzz”)

  1. 解决方案是像这样添加loginProc URL

antMatchers(“ / admin / xxx”,“ / admin / yyyy”,“ / admin / zzz”,“ / admin / loginProc”)