七天免登陆,利用Cooies中的凭证和拦截器制作
- 前端页面(jsp)
<form action="${ pageContext.request.contextPath}/login" method="post">
<input type="text" name="loginName" placeholder="请输入登陆名">
<input type="password" name="loginPwd" placeholder="请输入登陆密码">
<input type="checkbox" name="remember" value="1"/>一周免登陆
<button type="submit">登陆</button>
</form>
- 后端控制器(Controller)
//remember :是否有勾选免登陆
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginDo(Member m, HttpServletRequest request,HttpServletResponse response,Integer remember) {
if(remember == null){
//没有勾选免登陆,清除cookie中的凭证
Cookie ck = new Cookie("remember_ticket","");
ck.setMaxAge(0); //一周的过期时间
ck.setPath(request.getContextPath());
response.addCookie(ck);
}
Member member = service.login(m.getLoginName(), m.getLoginPwd());
//写点凭证给客户,让他下次自动登录
if(remember != null){
//勾选免登陆,在cookie中添加凭证
String uuid = UUID.randomUUID().toString();
Cookie cookie = new Cookie("remember_ticket",uuid);
cookie.setMaxAge(7*24*60*60); //一周的过期时间
cookie.setPath(request.getContextPath());//cookie在该路径下的网页起作用
//添加cookie意图,添加到响应头,真正回到浏览器的时候才会被添加到浏览器的cookie
response.addCookie(cookie);
//将uuid写入数据库
member.setUuid(uuid);
member.setUuidCreateTime(new Date());
service.edit(member