vue中使用cookies和crypto-js实现记住密码和加密的方法


Posted in Javascript onOctober 18, 2018

使用crypto-js加解密

第一步,安装

npm install crypto-js

第二步,在你需要的vue组件内import

import CryptoJS from "crypto-js";

第三步,使用

// Encrypt 加密 
  var cipherText = CryptoJS.AES.encrypt(
   "my message",
   "secretkey123"
  ).toString();
  console.log(cipherText)
  // Decrypt 解密
  var bytes = CryptoJS.AES.decrypt(cipherText, "secretkey123");
  var originalText = bytes.toString(CryptoJS.enc.Utf8);
  console.log(originalText); // 'my message'

注意这个mymessage是字符串,如果你要加密的用户id(number类型)得先转成字符串

更多使用请访问官方文档

记住密码

  • 实现原理是登录的时候,如果勾选了记住密码(把‘记住密码'状态保存到localstorage)就保存账号密码到cookies;
  • 之后进入登录页面的时候,判断是否记住了密码(从localstorage判断),如果记住密码则导出cookies到表单;

其中保存使用setcookie方法,取出则使用getcookie方法。

ok,我们来编写方法

//设置cookie
  setCookie(portId, psw, exdays) {
   // Encrypt,加密账号密码
   var cipherPortId = CryptoJS.AES.encrypt(
    portId+'',
    "secretkey123"
   ).toString();
   var cipherPsw = CryptoJS.AES.encrypt(psw+'', "secretkey123").toString();
   console.log(cipherPortId+'/'+cipherPsw)//打印一下看看有没有加密成功

   var exdate = new Date(); //获取时间
   exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays); //保存的天数
   //字符串拼接cookie,为什么这里用了==,因为加密后的字符串也有个=号,影响下面getcookie的字符串切割,你也可以使用更炫酷的符号。
   window.document.cookie =
    "currentPortId" +
    "==" +
    cipherPortId +
    ";path=/;expires=" +
    exdate.toGMTString();
   window.document.cookie =
    "password" +
    "==" +
    cipherPsw +
    ";path=/;expires=" +
    exdate.toGMTString();
  },
  //读取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("=="); //根据==切割
     //判断查找相对应的值
     if (arr2[0] == "currentPortId") {
      // Decrypt,将解密后的内容赋值给账号
      var bytes = CryptoJS.AES.decrypt(arr2[1], "secretkey123");
      this.currentPortId = bytes.toString(CryptoJS.enc.Utf8)-0;
     } else if (arr2[0] == "password") {
      // Decrypt,将解密后的内容赋值给密码
      var bytes = CryptoJS.AES.decrypt(arr2[1], "secretkey123");
      this.password = bytes.toString(CryptoJS.enc.Utf8);
     }
    }
   }
  },
  //清除cookie
  clearCookie: function() {
   this.setCookie("", "", -1); 
  }

登录的方法如下:

login() {
   this.$http //请根据实际情况修改该方法
    .post(...)
    .then(res => {
     if (res.data.code == "success") {
      if (this.rememberPsw == true) {
        //判断用户是否勾选了记住密码选项rememberPsw,传入保存的账号currentPortId,密码password,天数30
       this.setCookie(this.currentPortId, this.password, 30);
      }else{
       this.clearCookie();
      }
      //这里是因为要在created中判断,所以使用了localstorage比较简单,当然你也可以直接根据cookie的长度or其他骚操作来判断有没有记住密码。
      localStorage.setItem("rememberPsw", this.rememberPsw);
      
     } else {
      //----
     }
    })
    .catch(err => {
     //----
    });
  },

最后要在created狗子函数内判断用户是否记住了密码来执行相关的操作

//判断是否记住密码
//**注意这里的true是字符串格式,因为Boolean存进localstorage中会变成String**
 created() {
  //判断是否记住密码
  if (localStorage.getItem("rememberPsw") == 'true') {
   this.getCookie();
  }
 }

最后,界面贴上,其中rememberPsw是记住密码按钮的v-model值,currentPortId是第一个框的v-model值,password就是第二个框的v-model值啦。

vue中使用cookies和crypto-js实现记住密码和加密的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript Array数组对象的扩展函数代码
May 22 Javascript
javascript中判断一个值是否在数组中并没有直接使用
Dec 17 Javascript
JQuery 图片的展开和伸缩实例讲解
Apr 18 Javascript
js判断字符长度及中英文数字等
Mar 19 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
Jun 16 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
js实现大转盘抽奖游戏实例
Jun 24 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
Aug 20 Javascript
小程序实现列表删除功能
Oct 30 Javascript
vue中导出Excel表格的实现代码
Oct 18 #Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
Oct 18 #Javascript
vue 指令之气泡提示效果的实现代码
Oct 18 #Javascript
使用JS获取页面上的所有标签
Oct 18 #Javascript
深入理解 Koa 框架中间件原理
Oct 18 #Javascript
JS实现十分钟倒计时代码实例
Oct 18 #Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 #Javascript
You might like
PHP中计算字符串相似度的函数代码
2012/12/29 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
电子专业推荐信范文
2013/11/18 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
贷款承诺书范文
2014/05/19 职场文书
就业协议书
2014/09/12 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
元旦晚会开场白
2015/05/29 职场文书
z-index不起作用
2021/03/31 HTML / CSS