美文网首页让前端飞全栈笔记Vue项目
vue Cookie 实现记住密码功能

vue Cookie 实现记住密码功能

作者: 小贤笔记 | 来源:发表于2019-01-14 11:28 被阅读1次

    注: 文章摘自 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小时就是北京时间。(这里不做加密功能)


    相关文章

      网友评论

        本文标题:vue Cookie 实现记住密码功能

        本文链接:https://www.haomeiwen.com/subject/imrddqtx.html