Spring mvc 如何在Spring安全登录表单中进行额外验证?
我想知道如何在Spring Security处理登录表单之前对其进行额外的验证。我正在考虑一些LoginController,LoginFormBean,但我不知道如何将其组合在一起,如何配置它来工作。下面是我的“愿景”。我搜索了一些如何在SpringSecurity中实现这一点的示例,但没有找到。有人帮忙吗 loginformbean:Spring mvc 如何在Spring安全登录表单中进行额外验证?,spring-mvc,spring-security,Spring Mvc,Spring Security,我想知道如何在Spring Security处理登录表单之前对其进行额外的验证。我正在考虑一些LoginController,LoginFormBean,但我不知道如何将其组合在一起,如何配置它来工作。下面是我的“愿景”。我搜索了一些如何在SpringSecurity中实现这一点的示例,但没有找到。有人帮忙吗 loginformbean: public class LoginForm { private String j_username; private String j_pa
public class LoginForm {
private String j_username;
private String j_password;
@NotEmpty
private Boolean acceptTerms;
public String getJ_password() {
return j_password;
}
public String getJ_username() {
return j_username;
}
public void setJ_password(String j_password) {
this.j_password = j_password;
}
public void setJ_username(String j_username) {
this.j_username = j_username;
}
public Boolean getAcceptTerms() {
return acceptTerms;
}
public void setAcceptTerms(Boolean accept) {
this.acceptTerms = acceptTerms;
}
}
表格:
您可以将UsernamePasswordAuthenticationFilter子类化: 您可以重写attemptAuthentication()方法,让它调用super.attemptAuthentication(),如果它返回一个非空的身份验证对象,则执行其他工作(查看用户是否选中了该框) ,javax.servlet.http.HttpServletResponse) 有关如何指定客户筛选器的文档如下:
只需在@sdouglass评论顶部添加更多信息 在筛选器上,您将无法出于绑定目的访问表单 通过执行以下操作,我成功地通过默认验证获得了它 现在,如果登录变得不成功,那么它将再次点击这个URL,并在其URL中添加错误,就像在spring安全文件中设置失败URL一样。Spring安全文件:
<security:form-login
authentication-failure-url="/login?error=1"
/>
@Controller
class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String logging(@ModelAttribute @Valid LoginForm loginForm) {
...
}
}
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView signInPage(
@RequestParam(value = "error", required = false) String error,
@RequestParam(value = "logout", required = false) String logout)
{
ModelAndView mav = new ModelAndView();
//Initially when you hit on login url then error and logout both null
if (error != null) {
mav.addObject("error", "Invalid username and password!");
}
if (logout != null) {
mav.addObject("msg", "You've been logged out successfully.");
}
mav.setViewName("login/login.jsp");
}
<security:form-login
authentication-failure-url="/login?error=1"
/>
<c:if test="${not empty error}">
<div class="error">${error}</div>
</c:if>