Vue中使用js-cookie插件實現登錄時記住密碼后存取到Cookie中


場景

使用vue實現一個登錄頁面時,實現記住密碼功能。

在勾選了記住密碼后將密碼存儲到Cookie中,然后下次直接從Cookie中取。

 

 

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

官網

https://www.npmjs.com/package/js-cookie

安裝

npm install js-cookie --save

使用

為了使用方便,將設置和添加以及移除 Cookie的方法抽離出來為公共方法。

首先在項目下新建 utils目錄,在目錄下新建auth.js

然后在此js中先引入js-cookie插件

import Cookies from 'js-cookie'

然后聲明一個作為存取和刪除cookie的標志的key常量

const TokenKey = 'Admin-Token'

然后封裝並暴露方法

export function getToken() {
  return Cookies.get(TokenKey)
}

export function setToken(token) {
  return Cookies.set(TokenKey, token)
}

export function removeToken() {
  return Cookies.remove(TokenKey)
}

所以auth.js的完整代碼

import Cookies from 'js-cookie'

const TokenKey = 'Admin-Token'

export function getToken() {
  return Cookies.get(TokenKey)
}

export function setToken(token) {
  return Cookies.set(TokenKey, token)
}

export function removeToken() {
  return Cookies.remove(TokenKey)
}

然后在需要用到的vue頁面中對需要的方法引入,這里以獲取token為例

import { getToken } from '@/utils/auth'

然后就可以使用getToken獲取token了

  if (getToken() && !isToken) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 讓每個請求攜帶自定義token 請根據實際情況自行修改
  }

你可可以不對cookie進行封裝方法,在第一步安裝完js-cookie后,

直接在需要對Cookie進行操作的vue頁面,這里是login.vue登錄頁面

import Cookies from "js-cookie";

引入后在點擊登錄按鈕的處理事件方法中

         if (this.loginForm.rememberMe) {
            Cookies.set("username", this.loginForm.username, { expires: 30 });
            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
          } else {
            Cookies.remove("username");
            Cookies.remove("password");
            Cookies.remove('rememberMe');
          }

這塊邏輯是如果點擊了記住密碼,則將用戶名和密碼和是否記住密碼存入進Cookie

這里的密碼調用了RSA加密的方式防止密碼明文暴露。

具體實現可以參照下面

https://mp.csdn.net/console/editor/html/108343805

這是在點擊登錄按鈕后點擊了記住密碼的操作,那么在一開始進入登錄頁面后就需要去獲取Cookie然后

去填充進輸入框

所以在login.vue頁面的created函數中

  created() {
    this.getCookie();
  },

調用獲取Cookie的方法,方法的具體實現

    getCookie() {
      const username = Cookies.get("username");
      const password = Cookies.get("password");
      const rememberMe = Cookies.get('rememberMe')
      this.loginForm = {
        username: username === undefined ? this.loginForm.username : username,
        password: password === undefined ? this.loginForm.password : decrypt(password),
        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
      };
    },

首先是聲明相應的常量來根據key獲取Cookie中的數據,然后去進行是否為undefined的判斷。

如果是undefined的話說明就是之前沒有執行記住密碼的操作,即Cookie中沒有存儲的用戶名密碼等。

那么此登錄表單綁定的輸入框的屬性就是本身,否則的話就是從Cookie中去取用戶名和密碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM