Vue使用Cookie实现记住密码功能?

Vue使用Cookie实现记住密码功能?

在这里插入图片描述
实现功能:
1.不勾选,点击登陆后,输入框中的值会被清空,下次登陆需要手动输入
2.记住密码勾选,点登陆后,将账号和密码保存到cookie,下次登陆自动显示到登录框内

实现思路:
通过存/取/删cookie实现的;
取:每次进入登录页,先去读取cookie,如果浏览器的cookie中有账号信息,就自动填充到登录框中,如果没有就需要用户手动输入。
存:cookie是在登录成功之后,判断当前用户是否勾选了记住密码,如果勾选了,则把账号信息存到cookie当中,反之则不保存。
删:执行cookie的setCookie方法清空账户信息。

1.html部分

代码如下(示例):

<el-form
            :model="loginForm"
            status-icon
            ref="loginForm"
            class="login-form"
          >
            <el-form-item prop="username">
              <el-input
                type="text"
                v-model="loginForm.username"
                autocomplete="off"
                placeholder="用户名/手机号"
                clearable
              >
              <i slot="prefix" class="el-input__icon el-icon-user"></i>
              </el-input>
            </el-form-item>
            <span class="form-tip" v-if="isshow">用户名或密码不能为空</span>
            <el-form-item prop="password" style="margin: 0">
              <el-input
                type="password"
                v-model="loginForm.password"
                autocomplete="off"
                placeholder="密码"
                clearable
              >
              <i slot="prefix" class="el-input__icon el-icon-lock"></i>
              </el-input>
            </el-form-item>
             <div class="check-area">
                <el-checkbox v-model="isChecked">记住密码</el-checkbox>
             </div>
            <el-button type="primary" @click="login" class="login-btn">登录</el-button>
          </el-form>

2.js部分

代码如下(示例):

 data() {
    return {
      loginForm: {},
      isChecked: false,
      isshow: false
    };
  },
  created(){
    if(localStorage.getItem('isChecked') == 'true'){
      this.getCookie();
      this.isChecked = true
    }
  },
  methods: {
    login() {
      // 当用户名或者密码为空的时候出现提示
      if(!this.loginForm.username || !this.loginForm.password){
        this.isshow = true
      } else {
        this.isshow = false
        this.apis.getLogin({
          password: this.loginForm.password,
          loginName: this.loginForm.username
        }).then(res=>{
          let {code,msg,data} = res
          if(code == 0){
              //判断复选框是否被勾选 勾选则调用配置cookie方法
            if (this.isChecked == true) {
              this.setCookie(this.loginForm.username, this.loginForm.password, 7);
            } else {
              this.clearCookie()
            } 
            this.$message.success("登陆成功!")
            this.$router.push({ path: '/currentData' });
            localStorage.setItem('isChecked',this.isChecked)
            localStorage.setItem('userInfo',JSON.stringify(data))
          }else{
            this.$message.error("登录失败!")
          }
        })  
      }
    },
    setCookie(cname,cpwd,cdays) {
      //获取当前时间
      var curDate = new Date();
      //设置7天过期时间
      curDate.setTime(curDate.getTime() + 24*60*60*1000*curDate*cdays);
      //字符串拼接cookie
      window.document.cookie = "username"+"="+cname+";path=/;expires="	 + curDate.toLocaleString();
      window.document.cookie = "password"+"="+cpwd+";path=/;expires="	 + curDate.toLocaleString();
    },
    //获取cookie
    getCookie() {
        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.$set(this.loginForm,'username',arr2[1])
          } else if(arr2[0] == "password") {
            this.$set(this.loginForm,'password',arr2[1])
            this.loginForm.password = arr2[1];
          }
        }
      }
    },
    //清除cookie
    clearCookie() {
      this.setCookie("","",-1);
    }
  }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值