问题
如题
我的代码
html代码本身没有错误.
<span th:text="${msg}"></span>
<form th:action="@{/user/login}" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="提交" >
</form>
错误代码
@RequestMapping("/login")
public String login(String username, String password ,Model model ) {
//获取主体对象
Subject subject = SecurityUtils.getSubject();
try {
subject.login(new UsernamePasswordToken(username, password));
return "index";
} catch (UnknownAccountException e) {
e.printStackTrace();
System.out.println("用户名不存在!");
model.addAttribute("msg", "用户名不存在!");
} catch (IncorrectCredentialsException e) {
e.printStackTrace();
System.out.println("密码错误");
model.addAttribute("msg", "密码错误!");
}
return "redirect:/login";
}
原因
- 方法的最后使用了重定向到login.html页面,所以没有数据.
解决
只需要修改最后的返回值,不使用重定向即可.\
@RequestMapping("/login")
public String login(String username, String password ,Model model ) {
//获取主体对象
Subject subject = SecurityUtils.getSubject();
try {
subject.login(new UsernamePasswordToken(username, password));
return "index";
} catch (UnknownAccountException e) {
e.printStackTrace();
System.out.println("用户名不存在!");
model.addAttribute("msg", "用户名不存在!");
} catch (IncorrectCredentialsException e) {
e.printStackTrace();
System.out.println("密码错误");
model.addAttribute("msg", "密码错误!");
}
return "login";
}