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 相关文章推荐
一段利用WSH修改和查看IP配置的代码
May 11 Javascript
UserData用法总结 lanyu出品
Jul 01 Javascript
js对象之JS入门之Array对象操作小结
Jan 09 Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 Javascript
D3.js实现柱状图的方法详解
Sep 21 Javascript
微信小程序 页面跳转传参详解
Oct 28 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
BootStrap 表单控件之单选按钮水平排列
May 23 Javascript
学习Vue组件实例
Apr 28 Javascript
浅析JavaScript 函数柯里化
Sep 08 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
通达OA公共代码 php常用检测函数
2011/12/14 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
php单链表实现代码分享
2016/07/04 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
python调用windows api锁定计算机示例
2014/04/17 Python
使用Python对MySQL数据操作
2017/04/06 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
python学生管理系统的实现
2020/04/05 Python
pycharm的python_stubs问题
2020/04/08 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
元旦联欢会主持词
2014/03/26 职场文书
出纳担保书范文
2014/04/02 职场文书
大一新生检讨书
2014/10/29 职场文书
教师求职信怎么写
2015/03/20 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS