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 相关文章推荐
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
vue使用require.context实现动态注册路由
Dec 25 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
vue el-table实现递归嵌套的示例代码
Aug 14 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
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
python实现感知器
2017/12/19 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
django 多数据库配置教程
2018/05/30 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
英国女性时尚品牌:Apricot
2018/12/04 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
学前教育求职自荐信范文
2013/12/25 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
中小企业员工手册范本
2015/05/14 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
《假如》教学反思
2016/02/17 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers