vue登录页实现使用cookie记住7天密码功能的方法


Posted in Vue.js onFebruary 18, 2021

问题描述

项目的登录页中,会有要求记住7天密码的功能,本篇文章记录一下写法,主要是使用cookie,注释我写的很详细了,大家可以看一下我写的注释的步骤,还是比较详细的。亲测有效

html部分

代码图示

vue登录页实现使用cookie记住7天密码功能的方法

效果图示

vue登录页实现使用cookie记住7天密码功能的方法

代码粘贴

<el-form
       ref="form"
       :model="form"
       label-width="80px"
       label-position="top"
       @submit.native.prevent
      >
       <el-form-item label="用户名/账号">
        <div class="userError">
         <el-input
          size="mini"
          v-model.trim="form.userName"
          clearable
         ></el-input>
        </div>
       </el-form-item>
       <el-form-item label="密码">
        <div class="pwdError">
         <el-input
          size="mini"
          v-model.trim="form.loginPwd"
          clearable
          show-password
         ></el-input>
        </div>
       </el-form-item>
       <el-checkbox label="记住账号" v-model="isRemember"></el-checkbox>
       <el-button native-type="submit" size="mini" @click="loginPage"
        >登录</el-button
       >
      </el-form>

js部分

export default {
 name: "login",
 data() {
  return {
   form: {
    userName: '',
    loginPwd: '',
   },
   isRemember: false,
  };
 },
 mounted() {
  // 第1步,在页面加载的时候,首先去查看一下cookie中有没有用户名和密码可以用
  this.getCookie();
 },
 methods: {
  /* 第3步,当用户执行登录操作的时候,先看看用户名密码对不对
       若不对,就提示登录错误
       若对,就再看一下用户有没有勾选记住密码
          若没勾选,就及时清空cookie,回到最初始状态
          若勾选了,就把用户名和密码存到cookie中并设置7天有效期,以供使用
           (当然也有可能是更新之前的cookie时间)
  */
  async loginPage() {
   // 发请求看看用户输入的用户名和密码是否正确
   const res = await this.$api.loginByUserName(this.form)
   if(res.isSuccess == false){
    this.$message.error("登录错误")
   }
   else{
    const self = this;
    // 第4步,若复选框被勾选了,就调用设置cookie方法,把当前的用户名和密码和过期时间存到cookie中
    if (self.isRemember === true) {
     // 传入账号名,密码,和保存天数(过期时间)3个参数
     // 1/24/60 测试可用一分钟测试,这样看着会比较明显
     self.setCookie(this.form.userName, this.form.loginPwd, 1/24/60);
     // self.setCookie(this.form.userName, this.form.loginPwd, 7); // 这样就是7天过期时间
    } 
    // 若没被勾选就及时清空Cookie,因为这个cookie有可能是上一次的未过期的cookie,所以要及时清除掉
    else {
     self.clearCookie();
    }
    // 当然,无论用户是否勾选了cookie,路由该跳转还是要跳转的
    this.$router.push({
     name: "project",
    });
   }
  },
  // 设置cookie
  setCookie(username, password, exdays) {
   var exdate = new Date(); // 获取当前登录的时间
   exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays); // 将当前登录的时间加上七天,就是cookie过期的时间,也就是保存的天数
   // 字符串拼接cookie,因为cookie存储的形式是name=value的形式
   window.document.cookie = "userName" + "=" + username + ";path=/;expires=" + exdate.toGMTString();
   window.document.cookie = "userPwd" + "=" + password + ";path=/;expires=" + exdate.toGMTString();
   window.document.cookie = "isRemember" + "=" + this.isRemember + ";path=/;expires=" + exdate.toGMTString();
  },
  // 第2步,若cookie中有用户名和密码的话,就通过两次切割取出来存到form表单中以供使用,若是没有就没有
  getCookie: function () {
   if (document.cookie.length > 0) {
    var arr = document.cookie.split("; "); //因为是数组所以要切割。打印看一下就知道了
    // console.log(arr,"切割");
    for (var i = 0; i < arr.length; i++) {
     var arr2 = arr[i].split("="); // 再次切割
     // console.log(arr2,"切割2");
     // // 判断查找相对应的值
     if (arr2[0] === "userName") {
      this.form.userName = arr2[1]; // 转存一份保存用户名和密码
     } else if (arr2[0] === "userPwd") {
      this.form.loginPwd = arr2[1];//可解密
     } else if (arr2[0] === "isRemember") {
      this.isRemember = Boolean(arr2[1]);
     }
    }
   }
  },
  // 清除cookie
  clearCookie: fu![image](/img/bVcOHhz)
   this.setCookie("", "", -1); // 清空并设置天数为负1天
  },
 },
};

cookie存储图示

vue登录页实现使用cookie记住7天密码功能的方法

总结

其实也很简单,就是设置一个过期时间,也就是cookie的失效的日期,当然中间需要有一些格式的处理,数据的加工。

补充,cookie是存在浏览器中,浏览器安装在电脑中,比如安装在C盘,所以cookie是存在C盘中的某个文件夹下,那个文件夹不仅有cookie,还有localStorage和sessionStorage和别的,具体哪个文件夹大家可以自己动手找一找。其实所谓的本地存储其实就是存在自己的电脑上。

到此这篇关于vue登录页实现使用cookie记住7天密码功能的方法的文章就介绍到这了,更多相关vue登录页cookie记住密码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue+iview分页组件的封装
Nov 17 Vue.js
vue+iview实现文件上传
Nov 17 Vue.js
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
vue实现移动端div拖动效果
Mar 03 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
Vue包大小优化的实现(从1.72M到94K)
Feb 18 #Vue.js
Vue如何实现变量表达式选择器
Feb 18 #Vue.js
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 #Vue.js
如何在 Vue 中使用 JSX
Feb 14 #Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 #Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 #Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 #Vue.js
You might like
文件上传程序的全部源码
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
关于页面优化和伪静态
2009/10/11 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
javascript实现日期按月份加减
2015/05/15 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
python如何读写csv数据
2018/03/21 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
python中删除某个元素的方法解析
2019/11/05 Python
Python程序暂停的正常处理方法
2019/11/07 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
毕业生医学检验求职信
2013/10/16 职场文书
音乐器材管理制度
2014/01/31 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
总账会计岗位职责
2015/04/02 职场文书
小学六年级毕业感言
2015/07/30 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
人民币符号
2022/02/17 杂记