a.直接跳转到login.jsp时可以使用GET方法,不携带参数
@RequestMapping(value = "/login", method = RequestMethod.GET)
b.form表单POST提交验证的时候会有验证,这时可以在POST中添加校验
@RequestMapping(value = "/login", method = RequestMethod.POST)
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginForm(Model model) {
return "/login";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(Model model, @Valid @ModelAttribute("validatorBean") ValidatorUser validatorBean, BindingResult result) {
if (result.hasErrors()) {
return loginForm(model);
}
String exceptionClassName = (String) request.getAttribute("shiroLoginFailure");
logger.info(exceptionClassName);
if (CaptchaException.class.getName().equals(exceptionClassName)) {
result.rejectValue("error", "code.is.wrong");
return loginForm(model);
} else if (UnknownAccountException.class.getName().equals(exceptionClassName)) {
result.rejectValue("error", "user.username.password.notmatch");
return loginForm(model);
} else if (IncorrectCredentialsException.class.getName().equals(exceptionClassName)) {
result.rejectValue("error", "user.username.password.notmatch");
return loginForm(model);
} else if (ExcessiveAttemptsException.class.getName().equals(exceptionClassName)) {
result.rejectValue("error", "user.locked");
return loginForm(model);
} else if (exceptionClassName != null) {
result.rejectValue("error", "user.error.unknown");
return loginForm(model);
}
return "redirect:/";
}