vue项目实现记住密码到cookie功能

20 篇文章 1 订阅
6 篇文章 0 订阅

vue项目实现记住密码到cookie功能

一、实现功能:

1.记住密码勾选,点登陆时,将账号和密码保存到cookie,下次登陆自动显示到表单内
2.不勾选,点登陆时候则清空之前保存到cookie的值,下次登陆需要手动输入
在这里插入图片描述

二、思路:

大体思路就是通过存/取/删cookie实现的;每次进入登录页,先去读取cookie,如果浏览器的cookie中有账号信息,就自动填充到登录框中,存cookie是在登录成功之后,判断当前用户是否勾选了记住密码,如果勾选了,则把账号信息存到cookie当中,效果图如上:

三、具体实现:

html部分

<div class="ms-login">
        <div class="login-form">
                        <el-form ref="form" :model="form" :rules="rules">
                            <el-form-item prop="name">
                                <el-input v-model="form.name" placeholder="用户名" prefix-icon="el-icon-user">
                                    <!--<i slot="prefix" class="el-input__icon el-icon-user"></i>-->
                                </el-input>
                            </el-form-item>
                            <el-form-item prop="password">
                                <el-input type="password" v-model="form.password" @keyup.enter.native="onSubmit('form')" placeholder="密   码" prefix-icon="el-icon-lock"></el-input>
                            </el-form-item>
                            <el-form-item prop="rem">
                                <el-checkbox v-model="form.rem">记住密码,下次直接登录</el-checkbox>
                            </el-form-item>
                            <el-form-item>
                                <el-button @click="onSubmit('form')" v-loading="submitState">登 录</el-button>
                                <!--<el-button @click="testHttp">Test</el-button>-->
                            </el-form-item>
                        </el-form>
                    </div>
    </div>

js部分:


  data() {
            return {
                submitState: false,
                form: {
                    name: '',
                    password: '',
                    rem: false
                }
            }
        },
    mounted() {
   		//页面加载调用获取cookie值
        this.getCookie();
    },
    methods: {
        /**
             * 提交
             * @param formName
             */
            onSubmit(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        this.submitState = true;
                        const self = this;
                        //判断复选框是否被勾选 勾选则调用配置cookie方法
                        if (self.form.rem == true) {
                            console.log("checked == true");
                            //传入账号名,密码,和保存天数3个参数
                            self.setCookie(self.form.name, self.form.password,self.form.rem, 30);
                        }else {
                            console.log("清空Cookie");
                            //清空Cookie
                            self.clearCookie();
                        }

						//与后端请求代码,本功能不需要与后台交互所以省略
                        console.log("登陆成功");

                        this.$axios.post('/public/user/login',{pwd:this.form.password,username:this.form.name}).then(res => {
                            if (res.data.code === this.$webConfig.httpSuccessStatus) {
                                localStorage.accountName = res.data.data.real_name;
                                this.$ls.set(this.$webConfig.authTokenName,res.data.data);
                            }else {
                                this.$message(res.data.message);
                            }
                            this.submitState = false;
                        }).catch(()=>{
                            this.submitState = false;
                        })
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
              //设置cookie
            setCookie(c_name, c_pwd,c_status, 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();
                window.document.cookie = "userPwdStatus" + "=" + c_status + ";path=/;expires=" + exdate.toGMTString();
                console.log(window.document.cookie);
            },
            //读取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('='); //再次切割
                        //判断查找相对应的值
                        console.log(arr,arr2);
                        if (arr2[0] == 'userName') {
                            this.form.name = arr2[1]; //保存到保存数据的地方
                        } else if (arr2[0] == 'userPwd') {
                            this.form.password = arr2[1];
                        } else if (arr2[0] == 'userPwdStatus') {
                            if(arr2[1] == 'true'){
                                this.form.rem = true;
                            }else {
                                this.form.rem = false;
                            }
                        }
                    }
                }
            },
            //清除cookie
            clearCookie: function() {
                this.setCookie("", "", -1); //修改2值都为空,天数为负1天就好了
            }
    

浏览器中的cookie信息如下图,注意这里的cookie的expire/Max-Age过期时间,这个时间是格林尼治标准时间GMT,世界统一的时间,GMT+8小时就是北京时间。(这里不做加密功能)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值