Vue project realizes the function of remembering password to cookie (with source code)

login page

Implementation function:

1. Check remember password, when you click to log in, save the account and password to a cookie, and the next time you log in, it will be automatically displayed in the form.
2. If you don't check it, when you click to log in, you will clear the value saved in the cookie before logging in. You need to log in next time. Manual entry

The general idea is achieved by accessing/retrieving/deleting cookies; every time you enter the login page, read the cookie first, if the browser's cookie contains account information, it will be automatically filled into the login box, and the cookie will be stored after the login is successful. , to determine whether the current user has checked Remember password, if checked, the account information will be stored in the cookie, the effect is as above:

Go directly to the main code

HTML section

<div class="ms-login">
        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="0px" class="demo-ruleForm">
            <el-form-item prop="username">
                <el-input v-model="ruleForm.username" placeholder="用户名"></el-input>
            </el-form-item>
            <el-form-item prop="password">
                <el-input type="password" placeholder="密码" v-model="ruleForm.password" @keyup.enter.native="submitForm('ruleForm')"></el-input>
            </el-form-item>
            <!-- `checked` 为 true 或 false -->
            <el-checkbox v-model="checked">记住密码</el-checkbox>
            <br>
            <br>
            <div class="login-btn">
                <el-button type="primary" @click="submitForm('ruleForm')">登录</el-button>
            </div>
        </el-form>
    </div>

JS part


    //页面加载调用获取cookie值
    mounted() {
        this.getCookie();
    },
    methods: {
        submitForm(formName) {
                         const self = this;
                        //判断复选框是否被勾选 勾选则调用配置cookie方法
                        if (self.checked == true) {
                            console.log("checked == true");
                            //传入账号名,密码,和保存天数3个参数
                            self.setCookie(self.ruleForm.username, self.ruleForm.password, 7);
                        }else {
                          console.log("清空Cookie");
                          //清空Cookie
                          self.clearCookie();
                        }

                        //与后端请求代码,本功能不需要与后台交互所以省略

                        console.log("登陆成功");

                });
            },
            //设置cookie
            setCookie(c_name, c_pwd, exdays) {
                var exdate = new Date(); //获取时间
                exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays); //保存的天数
                //字符串拼接cookie
                window.document.cookie = "userName" + "=" + c_name + ";path=/;expires=" + exdate.toGMTString();
                window.document.cookie = "userPwd" + "=" + c_pwd + ";path=/;expires=" + exdate.toGMTString();
            },
            //读取cookie
            getCookie: function() {
                if (document.cookie.length > 0) {
                    var arr = document.cookie.split('; '); //这里显示的格式需要切割一下自己可输出看下
                    for (var i = 0; i < arr.length; i++) {
                        var arr2 = arr[i].split('='); //再次切割
                        //判断查找相对应的值
                        if (arr2[0] == 'userName') {
                            this.ruleForm.username = arr2[1]; //保存到保存数据的地方
                        } else if (arr2[0] == 'userPwd') {
                            this.ruleForm.password = arr2[1];
                        }
                    }
                }
            },
            //清除cookie
            clearCookie: function() {
                this.setCookie("", "", -1); //修改2值都为空,天数为负1天就好了
            }


The cookie information in the browser is as shown in the figure below. Pay attention to the expiration/Max-Age expiration time of the cookie here. This time is GMT, the world's unified time. GMT+8 hours is Beijing time. (There is no encryption function here)

write picture description here

The source code link vue project realizes the function of saving the account and password to the cookie on the form login page

If you think it helps you, please star.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325816302&siteId=291194637