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 相关文章推荐
从新浪弄下来的全屏广告代码 与使用说明
Mar 15 Javascript
jQuery数据缓存功能的实现思路及简单模拟
May 27 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
Sep 21 Javascript
js实现分割上传大文件
Mar 09 Javascript
jQuery事件处理的特征(事件命名机制)
Aug 23 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
Sep 16 Javascript
vue组件如何被其他项目引用
Apr 13 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
妙用Angularjs实现表格按指定列排序
Jun 23 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 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
Yii支持多域名cors原理的实现
2018/12/05 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
技术总监岗位职责
2013/12/05 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js