vue 登录 密码加密、记住密码、enter进入系统

529 阅读1分钟

密码加密

1.安装CryptoJS

打开终端输入 npm install crypto-js

2.新建asc.js文件并引入crypto-js

image.png

import CryptoJS from 'crypto-js'

// 需要和后端一致

const KEY = CryptoJS.enc.Utf8.parse('888');
const IV = CryptoJS.enc.Utf8.parse('888');

export default {

  /**
   * 加密
   * @param {*} word
   * @param {*} keyStr
   * @param {*} ivStr
   */
  encrypt (word, keyStr, ivStr) {
    let key = KEY;
    let iv = IV;
    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr);
      iv = CryptoJS.enc.Utf8.parse(ivStr);
    }
    let srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
  },

  /**
   * 解密
   * @param {*} word
   * @param {*} keyStr
   * @param {*} ivStr
   */
  decrypt (word, keyStr, ivStr) {
    let key = KEY;
    let iv = IV;

    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr);
      iv = CryptoJS.enc.Utf8.parse(ivStr);
    }

    let base64 = CryptoJS.enc.Base64.parse(word);
    let src = CryptoJS.enc.Base64.stringify(base64);

    let decrypt = CryptoJS.AES.decrypt(src, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });

    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
  }
}


3.在登录页中使用

image.png

image.png

先引入asc文件

在提交的时候密码调用asc.encrypt(密码)方法即可

记住密码

image.png

提交表单时判断记住密码是否被选中,如果选中则把密码保存到长期存储里

// 保存缓存密码
    saveLocalPassword() {
      localStorage.setItem("localPassword", JSON.stringify(this.userForm));
    },

否则移除

localStorage.removeItem('localPassword')

等下次进入时则会在created调用密码缓存方法,有则把密码回显出来

// 获取缓存密码
    getLocalPassword() {
      this.isRemenberPassword = false;
      let form = JSON.parse(localStorage.getItem("localPassword"));
      if (form) {
        this.isRemenberPassword = true;
        this.userForm = form;
      }
    },

enter进入系统

// 按enter登录
  mounted() {
    window.addEventListener(
      "keydown",
      (e) => {
        if (e.key == "Enter") {
          this.submitForm("userForm");
        }
      },
      true
    );
  },
  beforeDestroy() {
    window.removeEventListener(
      "keydown",
      (e) => {
        if (e.key == "Enter") {
          this.submitForm("userForm");
        }
      },
      true
    );
  },