java使用cookie实现记住密码:
后端:
String username = request.getParameter("username");
String password = request.getParameter("password");
String remFlag = request.getParameter("remFlag");
if("1".equals(remFlag)){ //"1"表示用户勾选记住密码
/*String cookieUserName = Utils.encrypt(name);
String cookiePwd = Utils.encrypt(passWord);
String loginInfo = cookieUserName+","+cookiePwd;*/
String loginInfo = username+"#"+password; //注此处分割符要注意避免使用cookie不能包含的内容:不能包含空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号,否则会报错500
Cookie userCookie=new Cookie("loginInfo",loginInfo);
userCookie.setMaxAge(30*24*60*60); //存活期为一个月 30*24*60*60
userCookie.setPath("/");
response.addCookie(userCookie);
}
前端:
<div class="layui-form-item">
<label class="layui-form-label">用户名:</label>
<div class="layui-input-inline">
<input id="username" name="username" lay-verify="title" autocomplete="off" placeholder="请输入您的手机号/用户名" class="layui-input" type="text">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码:</label>
<div class="layui-input-inline" >
<input id="password" name="password" placeholder="请输入您的密码" autocomplete="off" class="layui-input" type="password"><p style="color:red;" id="error"></p>
</div>
</div>
<div class="layui-form-item layui-checkbox" pane="">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input class="fl" type="checkbox" lay-skin="primary" id="remFlag" lay-filter="owner_all" value="" title="记住密码">记住密码
<a href="javascript:void(0)" class="fr">忘记密码</a>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<button onclick="login();" class="layui-btn">登录</button>
</div>
</div>
$(document).ready(function(){
//记住密码功能
var str = getCookie("loginInfo");
str = str.substring(1,str.length-1);
var username = str.split("#")[0];
var password = str.split("#")[1];
//自动填充用户名和密码
$("#username").val(username);
$("#password").val(password);
$("#remFlag").prop("checked",true);
});
//获取cookie
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return "";
}
因为分隔符的问题,造成了500得错误:
切记:
String loginInfo = username+"#"+password; //注此处分割符要注意避免使用cookie不能包含的内容:不能包含空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号,否则会报错500