未找到Java配置/j_spring_安全检查

未找到Java配置/j_spring_安全检查,java,spring,spring-security,http-status-code-404,j-security-check,Java,Spring,Spring Security,Http Status Code 404,J Security Check,我是Spring框架的noob 正在尝试为应用程序配置安全选项。我将以下内容作为无xml安全配置: @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired @Qualifier("accountService") UserDetailsService userDetailsService; @Autowired public v

我是Spring框架的noob

正在尝试为应用程序配置安全选项。我将以下内容作为无xml安全配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("accountService")
UserDetailsService userDetailsService;

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.csrf().disable().authorizeRequests()
            .antMatchers("/admin/**" ).hasRole( "Admin" )
            .and()
            .formLogin()
            .loginPage("/")
            .loginProcessingUrl( "/j_spring_security_check" )
            .failureUrl( "/loginfailed" )
            .permitAll()
            .and().logout().logoutSuccessUrl("/logout")
            .and().exceptionHandling().accessDeniedPage("/403");
}

@Bean
public PasswordEncoder passwordEncoder(){
    PasswordEncoder encoder = new BCryptPasswordEncoder();
    return encoder;
}

}
它显示登录页面,但当我提交时,它会抛出一个/j_spring_security_check Not Found异常。非常感谢您的帮助

因此,我的web配置是:

public class WebConfig implements WebApplicationInitializer {

public void onStartup( ServletContext servletContext ) throws ServletException {

    AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
    applicationContext.register( MvcServletConfig.class );
    applicationContext.register( SecurityConfig.class );

    //Add the servlet mapping manually and make it initialize automatically
    ServletRegistration.Dynamic servlet = servletContext.addServlet( "dispatcher", new DispatcherServlet( applicationContext ) );
    servletContext.addListener(new ContextLoaderListener(applicationContext));
    servlet.addMapping( "/" );
    servlet.setLoadOnStartup( 1 );
}
}

.loginPage/覆盖您必须提交到的url


也许你想要的是。loginPage/j_spring\u security\u check

这样更改了我的网络配置

@Configuration
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
    return new String[ ] { "/" };
}

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class<?>[ ] { AppConfig.class, SecurityConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[ ]{ MvcServletConfig.class };
}
}
SecurityConfig中的配置方法覆盖现在如下所示:

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
                .loginPage( "/" )
                .loginProcessingUrl( "/j_spring_security_check" )
                .defaultSuccessUrl( "/hello" )
                .failureUrl( "/loginfailed" )
                .permitAll()
            .and()
            .logout()
                .logoutUrl( "/j_spring_security_logout" )
                .logoutSuccessUrl( "/" )
                .invalidateHttpSession( true )
            .and()
            .exceptionHandling().accessDeniedPage( "/WEB-INF/pages/403.jsp" )
            .and()
            .csrf()
            .and()
            .httpBasic();
}

希望这对别人有帮助!感谢所有提出建议的人:-

类似于?尝试从j_spring_security_check中删除/创建URL,或使用上下文的绝对路径创建URL,然后/j_spring_security_check。@BretC-我确实尝试过,这在一定程度上有所帮助,但很快我就被j_spring_security_注销卡住了。我现在已经更新了答案@OO7-谢谢,但这也没什么帮助。不太可能,因为servlet映射中的登录页就是这样设置的。相反,登录过程检查/j_spring_security_check对我有效。
@Override
protected void configure(HttpSecurity http) throws Exception {

    http.authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
                .loginPage( "/" )
                .loginProcessingUrl( "/j_spring_security_check" )
                .defaultSuccessUrl( "/hello" )
                .failureUrl( "/loginfailed" )
                .permitAll()
            .and()
            .logout()
                .logoutUrl( "/j_spring_security_logout" )
                .logoutSuccessUrl( "/" )
                .invalidateHttpSession( true )
            .and()
            .exceptionHandling().accessDeniedPage( "/WEB-INF/pages/403.jsp" )
            .and()
            .csrf()
            .and()
            .httpBasic();
}