gpt4 book ai didi

java - Spring 安全: j_spring_security_check page not found

转载 作者:行者123 更新时间:2023-12-01 11:18:27 26 4
gpt4 key购买 nike

我正在尝试使用 Spring Security,但是当我使用表单登录(有或没有正确的用户名/密码)时,我收到 404 错误:http://localhost/HomeAutomation/j_spring_security_check .

这是我的文件:

SecurityConfig.java:

@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("greg").password("123").roles("USER");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/home/**").access("hasRole('ROLE_USER')")
.and()
.formLogin().permitAll().loginPage("/index").failureUrl("/index?loginError=1")
.defaultSuccessUrl("/home", true).successHandler(new LoginSuccessHandler())
.usernameParameter("username").passwordParameter("password")
.and()
.logout().logoutSuccessUrl("/index?logout=1")
.and()
.csrf();
}
}

SpringMvcInitializer.java

public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

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

@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}

@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}

SpringSecurityInitializer.java

public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer{
//nothing to do
}

index.jsp:

    <c:if test="${not empty loginError}">
<div class="errorMsg">${loginError}</div>
</c:if>

<form name='loginForm' action="<c:url value='j_spring_security_check' />" method='post'>...</form>

你知道为什么这不起作用吗?

抱歉我的英语不好。预先感谢您。

最佳答案

Spring Security 的 Java 配置默认使用与 XML 配置不同的 URL。这意味着自从您指定以来:

http
.formLogin()
.permitAll()
.loginPage("/index")
.failureUrl("/index?loginError=1")
.defaultSuccessUrl("/home", true)
.successHandler(new LoginSuccessHandler())
.usernameParameter("username")
.passwordParameter("password")

Spring Security 将使用 GET/index 进行重定向来请求您的登录页面(与您的 loginPage 属性的值相同)。 Spring Security 将监视 POST/index 以获取要提交的用户名和密码(在 HTTP 参数用户名和密码上)。

如果你想改变这个,你可以使用:

http
.formLogin()

// MODIFY HERE
.loginProcessingUrl("/j_spring_security_check")

.permitAll()
.loginPage("/index")
.failureUrl("/index?loginError=1")
.defaultSuccessUrl("/home", true)
.successHandler(new LoginSuccessHandler())
.usernameParameter("username")
.passwordParameter("password")

附加说明:

关于java - Spring 安全: j_spring_security_check page not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com