在登录时根据记住密码框单选框的值来设置cookie和销毁cookie
登录页面,使用ajax实现的,已加载就调用loadCookie方法
$(function(){ //记住密码 $.get("/crowdfunding/user/loadCookie",function(map){ if(map!=null){ $("input[name=remember]").attr("checked",true) $("input[name=us_phone]").val(map.us_phone) $("input[name=us_password]").val(map.us_password) } }, "json" ) })
表单,手机号、密码、记住密码三个input
<form id="frm"> <fieldset> <label class="block clearfix"> <span class="block input-icon input-icon-left"> <i class="ace-icon fa fa-user"></i> <input name="us_phone" type="text" class="form-control" placeholder="手机号码" /> </span> </label> <label class="block clearfix"> <span class="block input-icon input-icon-left"> <i class="ace-icon fa fa-lock"></i> <input name="us_password" type="password" class="form-control" placeholder="请输入密码" /> </span> </label> <div class="space"></div> <div class="clearfix"> <label class="inline"> <input name="remember" type="checkbox" class="ace" value="true" /> <span class="lbl"> 记住密码</span> </label> <button onclick="login()" type="button" class="width-35 pull-right btn btn-sm btn-primary"> <i class="ace-icon fa fa-key"></i> <span class="bigger-110">登录</span> </button> </div> <div class="space-4"></div> </fieldset> </form>
controller层,登录时,调用addCookie方法
@RequestMapping("login")
@ResponseBody
public Boolean login(String us_phone, String us_password,boolean remember, HttpSession session,HttpServletRequest request,HttpServletResponse response) {
User user = userService.login(us_phone, us_password);
if(user != null) {
session.setAttribute("user", user);
addCookie(request,response,us_phone,us_password,remember);
return true;
}
return false;
}
//添加一个cookie
private void addCookie(HttpServletRequest request, HttpServletResponse response, String us_phone, String us_password, boolean remember) {
if(remember==true) {
Cookie cookie1=new Cookie("us_phone", us_phone);
Cookie cookie2=new Cookie("us_password", us_password);
//cookie.setPath("/");//设置cookie在服务器中共享
response.addCookie(cookie1);
response.addCookie(cookie2);
}
else {
Cookie[] cookies = request.getCookies();
if(cookies!=null) {
for(Cookie c:cookies) {
c.setMaxAge(0);//销毁cookie
response.addCookie(c);
}
}
}
}
页面加载时
//加载cookie @RequestMapping("loadCookie") @ResponseBody public Map<String,Object> loadCookie(@CookieValue(value="us_phone",required=false)String us_phone,@CookieValue(value="us_password",required=false)String us_password) { if(us_phone!=null&&us_password!=null) { Map<String, Object> map=new HashMap<>(); map.put("us_phone", us_phone); map.put("us_password", us_password); return map; } return null; }
这样就完成了简单的记住密码功能(不能记住多个账号密码 )
原文:https://www.cnblogs.com/psxfd4/p/11605568.html