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 相关文章推荐
jquery.validate使用攻略 第三部
Jul 01 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
Nov 29 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
JavaScript设计模式开发中组合模式的使用教程
May 18 Javascript
jQuery Ajax前后端使用JSON进行交互示例
Mar 17 Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
原生JS实现前端本地文件上传
Sep 08 Javascript
js中Array对象的常用遍历方法详解
Jan 17 Javascript
javascript实现fetch请求返回的统一拦截
Dec 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
php的控制语句
2006/10/09 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
《四季》教学反思
2014/04/08 职场文书
作息时间调整通知
2015/04/22 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
公司董事任命书
2015/09/21 职场文书
Python中递归以及递归遍历目录详解
2021/10/24 Python
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
Go gorilla/sessions库安装使用
2022/08/14 Golang