注: 文章摘自 nxmin - 简书
功能
1.记住密码勾选,点登陆时,将账号和密码保存到cookie,下次登陆自动显示到表单内
2.不勾选,点登陆时候则清空之前保存到cookie的值,下次登陆需要手动输入
思路
通过存/取/删cookie实现的;每次进入登录页,先去读取cookie,如果浏览器的cookie中有账号信息,就自动填充到登录框中,存cookie是在登录成功之后,判断当前用户是否勾选了记住密码,如果勾选了,则把账号信息存到cookie当中
代码
- html
<!-- 仅展示主要代码-->
手机号<input type="tel" placeholder="请输入手机号" v-model="username">
密码<input type="tel" placeholder="请输入密码" v-model="password">
<input type="checkbox" v-model="isChecked">记住密码
<a @click="login()">登录</a>
- js
export default {
data() {
return {
username: '', // 用户名
password: '', // 密码
isChecked: true // 记住密码
}
},
// 页面加载调用获取Cookie值
mounted() {
this.getCookie();
},
methods: {
// 登录按钮
login() {
// 判断复选框是否被勾选; 勾选则调用配置Cookie方法
if (this.isChecked) { // 记住密码
this.setCookie(this.username, this.password, 30); // 保存期限为30天
} else {
this.clearCookie(); // 清空 Cookie
}
},
// 设置Cookie
setCookie(username, password, exdays) { // 用户名, 密码, 保存天数
let exdate = new Date(); // 获取时间
exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
// 字符串拼接cookie
window.document.cookie = 'userName=' + username + ';path=/;expires=' + exdate.toGMTString();
window.document.cookie = 'userPwd=' + password + ';path=/;expires=' + exdate.toGMTString();
},
// 读取Cookie
getCookie() {
// console.log(document.cookie);
if (document.cookie.length > 0) {
let arr = document.cookie.split('; '); // 这里显示的格式需要切割一下自己可输出看下
for (let i = 0; i < arr.length; i++) {
let arr2 = arr[i].split('='); // 再次切割
// 判断查找相对应的值
if (arr2[0] == 'userName') {
this.usernameText = arr2[1]; // 保存到保存数据的地方
} else if (arr2[0] == 'userPwd') {
this.passwordText = arr2[1];
}
}
}
},
// 清除Cookie
clearCookie() {
this.setCookie('', '', -1); // 修改2值都为空,天数为负1天就好了
}
}
};
注意
浏览器中的cookie信息如下图,注意这里的cookie的expire/Max-Age过期时间,这个时间是格林尼治标准时间GMT,世界统一的时间,GMT+8小时就是北京时间。(这里不做加密功能)
网友评论