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 相关文章推荐
利用Ext Js生成动态树实例代码
Sep 08 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
JavaScript Math 对象常用方法总结
Apr 28 Javascript
vue2.0+webpack环境的构造过程
Nov 08 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
vue双花括号的使用方法 附练习题
Nov 07 Javascript
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
layui表格数据重载
Jul 27 Javascript
Javascript 对象(object)合并操作实例分析
Jul 30 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
Node.js fs模块原理及常见用途
Oct 22 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP4实际应用经验篇(7)
2006/10/09 PHP
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
Python中常用的内置方法
2019/01/28 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
python中_del_还原数据的方法
2020/12/09 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
个人求职简历的自我评价
2013/10/19 职场文书
食堂个人先进事迹
2014/01/22 职场文书
小学语文教学反思
2014/02/10 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
促销活动计划书
2014/05/02 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
JavaScript实现简单的音乐播放器
2022/08/14 Javascript