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 相关文章推荐
springboot+vue实现文件上传下载
Nov 17 Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
el-table-column 内容不自动换行的解决方法
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中设置时区方法小结
2012/06/03 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
解读Python中degrees()方法的使用
2015/05/18 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python Cartopy的基础使用详解
2020/11/01 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
投标单位介绍信
2014/01/09 职场文书
工作会议欢迎词
2014/01/16 职场文书
司仪主持词两篇
2014/03/22 职场文书
水毁工程实施方案
2014/04/01 职场文书
致共产党员倡议书
2014/04/16 职场文书
生活部的活动方案
2014/08/19 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
工作经验交流材料
2014/12/30 职场文书
运动会通讯稿100字
2015/07/20 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫