Java 使用Spring安全性时,自定义登录表单不起作用
我正在学习SpringMVC,并试图在我的应用程序中实现SpringSecurity。我已经创建了自定义登录,并尝试使用自定义登录表单登录。当我运行应用程序时,登录页面正确显示,但在输入用户名和密码后,该页面不起作用。提交登录表单是调用控制器操作,也不是重定向到任何其他页面。我无法理解此处需要哪种配置 SecurityConfig.Java SecurityWebAppInitializer.java AuthController.java login.jspJava 使用Spring安全性时,自定义登录表单不起作用,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我正在学习SpringMVC,并试图在我的应用程序中实现SpringSecurity。我已经创建了自定义登录,并尝试使用自定义登录表单登录。当我运行应用程序时,登录页面正确显示,但在输入用户名和密码后,该页面不起作用。提交登录表单是调用控制器操作,也不是重定向到任何其他页面。我无法理解此处需要哪种配置 SecurityConfig.Java SecurityWebAppInitializer.java AuthController.java login.jsp 记得我吗 因此,我的登录页面是
记得我吗
因此,我的登录页面是正确的,但输入用户名后,密码不起作用。我不知道我的项目结构是否要为错误负责,因为有时单击“登录”后,它会重定向到资源。您不必发送对象或验证密码,因为Spring会为您处理这些,也不会重定向。如果您希望在它们成功通过身份验证后重定向它们,那么您可以在配置中添加
.defaultSuccessUrl(url)
,它会自动将它们重定向到该页面。此外,方法必须是POST
,操作必须是login
——这两个要求是必须的。这是贝尔东的一篇教程,你也可以按照这篇教程来学习。…这要归功于查德·达比
根本原因是Maven项目是由原型生成的。不幸的是,原型会生成遗留的配置文件。因此,web项目基于Servlet2.3的旧版本。Servlet2.3规范的旧版本不支持SpringSecurity5所需的特性。这就是你的应用程序最初无法运行的原因
有很多方法可以解决这个问题。我将使用下面一种更简单的技术
保存文件
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.inMemoryAuthentication()
.withUser("test").password("test").roles("admin");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/loginPage")
.permitAll();
}
}
public class SecurityWebAppInitializer extends
AbstractSecurityWebApplicationInitializer {
}
@RequestMapping(value = { "/loginPage" }, method = RequestMethod.GET)
public String loginPage(ModelMap model) {
model.addAttribute("user",new User());
return "Login";
}
@RequestMapping(value = { "/success/login" }, method = RequestMethod.POST)
public String login(@ModelAttribute("user") @Validated User user, BindingResult result, Model model, HttpServletRequest request) {
System.out.println("Login is called.");
return "UserDashboard";
}
<form:form method="post" action="./success/login" id="login"
modelAttribute="user" role="form" style="display: block;">
<div class="form-group">
<form:input name= "username" path="username" id="username" type="text" placeholder="Username" tabindex="1" class="form-control"/>
<form:errors path="username" cssStyle="color: red;"/>
</div>
<div class="form-group">
<form:input name="password" path="password" id="password" type="password" placeholder="Password" tabindex="2" class="form-control"/>
<form:errors path="password" cssStyle="color: red;"/>
</div>
<div class="form-group text-center">
<input type="checkbox" tabindex="3" class="" name="remember" id="remember">
<label for="remember"> Remember Me</label>
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<input type="submit" name="login-submit" id="submit" tabindex="4" class="form-control btn btn-login" value="Log In">
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-lg-12">
<div class="text-center">
<a href="https://phpoll.com/recover" tabindex="5" class="forgot-password">Forgot Password?</a>
</div>
</div>
</div>
</div>
</form:form>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="wst.jsdt.web" version="1.0”/>
<installed facet="jst.web" version="4.0"/>
<installed facet="java" version="1.8”/>
</faceted-project>