最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue前端如何設置Cookie和鑒權問題詳解

 更新時間:2025年02月10日 08:55:06   作者:月上初小  
這篇文章主要介紹了前端如何設置和使用Cookie,并對比了Cookie和Token在鑒權中的優(yōu)缺點,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前景:

本周五的時候后端讓我從前端工程中排查,有沒有設置cookie。在我連續(xù)說了沒有的情況下,連續(xù)四次被質疑。最后以我發(fā)四說沒有,不歡而散。 基于對前端的不信任,寫個小作文來說明vue前端怎么設置cookie

Cookie的概念性質的東西這里不贅述。

一:Cookie生成機制

  • 服務端生成,在 Http響應頭 Respond-Header 中 Set-Cookie
  • 客戶端生成

二:服務端生成

  • 服務端可通過 Cookie類的構造函數和實例方法設置Cookie(key=value)并返回,
  • 瀏覽器收到響應并發(fā)現響應頭中有 Set-Cookie,瀏覽器就會把key、value保存在瀏覽器中。
  • 在向同一個域名發(fā)起的后續(xù)請求中,瀏覽器會在請求頭中加上該cookie字段(除非它過期了)。

服務器端通過設置Set-Cookie 的 Expires 和 Max-Age兩個屬性來設置cookie的有效期

1、Expires 

Set-Cookie: sessionId=abc123; Expires=Thu, 01 Jan 1970 00:00:00 UTC;

Expires 的值必須是一個完整的日期和時間,包括年、月、日、時、分、秒和時區(qū)。

  • Expires 值為 過去時,瀏覽器立馬刪除該Cookie;
  • Expires 值為 將來時,瀏覽器會在將來的那個時點刪除該Cookie

2、Max-Age

Set-Cookie: sessionId=abc123; Max-Age=0;

Max-Age的值是個秒值。

  • Max-Age = 0;瀏覽器立即刪除該Cookie
  • Max-Age = -1;  瀏覽器重啟后Cookie消失。關閉當前頁簽或者關閉瀏覽器,Cookie都會消失。
  • Max-Age=3600; 表示3600 秒(即 1H)內有效,超期失效。

同時設置這倆屬性時,Max-Age 的優(yōu)先級高于Expires

三:客戶端生成方式

  • JavaScript 自帶的 document.cookie
  • 第三方依賴庫:如js-cookie

1、document.cookie

// 設置cookie
document.cookie = 'sessionId=abc123; path=/'

// 獲取Cookie值
const getCookie = name => {
  var cookies = document.cookie.split(";");
  for (let i = 0; i < cookies.length; i++) {
    const [key, value] = cookies[i].split("=")
    if (key.trim() === name) {
      return value;
    }
  }
  return ""
};


// 刪除cookie 
// 方式:將cookie的 過期時間(expires)屬性指定為一個過去的時間
const deleteCookie = name => { 
  document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';  
}
deleteCookie('password');

2、js-cookie

import Cookies from 'js-cookie';  

// 設置cookie  
Cookies.set('sessionId', 'abc123');  
  
// 獲取cookie  
const sessionId = Cookies.get('sessionId');  
  
// 刪除cookie  
Cookies.remove('sessionId');

四:--------- 我是分割線 ---------

前端是否設置cookie,工程中全局搜索cookie關鍵字,就能判斷前端是否做了特殊處理。

cookie通過瀏覽器自動管理,大多數情況下前端并不需要處理cookie。

瀏覽器本地數據存儲:建議使用web storage(包括localStorage和sessionStorage)。更大的存儲空間(5M左右),提供了多個屬性和方法,數據操作更簡單。

五:鑒權

1)cookie的缺點

  • 不安全:cookie的鍵值對都是明文,用戶可通過瀏覽器或其他工具拿到cookie,可能被篡改(document.cookie),存在安全隱患。因cookie存在安全問題,有些企業(yè)的內網或安全策略會要求禁用cookie。
  • 容量限制:每個cookie的大小不超過4KB,單個域名設置的Cookie數量有限制。
  • 不能存實例
  • 一些設備或瀏覽器可能不支持cookie
  • 跨域問題
  • ...

因上面的缺點,cookie不適合做鑒權,需要用session配合。

2)Session

Cookie將內容(key、value等信息)通過響應頭返回。如果這些內容不直接返回,而是保存在服務器端,給內容取個名字叫session上下文,給上下文取個id叫SessionId(隨便叫什么id都行)??蛻舳烁掌鞫送ㄟ^SessionId關聯。

SessionId通常以Cookie的形式存儲在客戶端。但Cookie并不是唯一方式,URL也可以。不過URL方式對用戶不友好,所以基本上沒有互聯網項目會采用這種方案。

Session的問題

  • Session中保存的數據的大小要考慮到存儲上限
  • 依賴Session的關鍵業(yè)務一定要確??蛻舳碎_啟了Cookie
  • 在負載均衡的情況下,由于存在Web服務器內存中的Session無法共享,通常需要重寫Session的實現。
  • Session內容的丟失都是有原因的,通常都是由于Web服務器的重啟造成的

cookie或者sesssion,都是后端在主導,前端相關的動作都是由標準瀏覽器來完成。js在其中只是用戶體驗的工作,而不是邏輯功能層面的工作

現在最普遍的鑒權方案是:Token。

3)Token

Token 是在服務端產生的。前端使用用戶名/密碼向服務端請求認證,服務端認證成功,那么服務端會返回 Token 給前端。前端可以在每次請求的時候帶上 Token 證明自己的合法地位。

Token的全稱是JSON Web Token,簡稱jwt。

詳述

前端使用用戶名/密碼向服務端請求認證,服務端認證成功后,將用戶id等信息進行打包,打包時利用secret(HS256算法、RS256算法等)加密,那么服務端會返回 Token 給前端。

前端拿到token,是解不開的,因為服務器肯定不會把secret傳給前端,讓前端去解。

前端可以在每次請求的時候帶上 Token 證明自己的合法地位。后端在請求頭(一般放在請求頭)中拿到這個Token,進行驗證。驗證主要是兩個層面:簽名是否有效,是否過期。

總結

到此這篇關于Vue前端如何設置Cookie和鑒權問題的文章就介紹到這了,更多相關Vue前端設置Cookie和鑒權內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue.js 2.0學習教程之從基礎到組件詳解

    Vue.js 2.0學習教程之從基礎到組件詳解

    這篇文章主要介紹了Vue.js 2.0從基礎到組件的相關資料,文中介紹的非常詳細,對大家學習或者使用vue.js具有一定的參考價值,需要的朋友可以參考學習,下面來一起看看吧。
    2017-04-04
  • 基于Vue+ECharts實現地圖展示與交互

    基于Vue+ECharts實現地圖展示與交互

    這篇文章中,我將逐步介紹如何使用 Vue 和 ECharts 實現一個互動式的地圖展示組件,其中支持返回上一層地圖、點擊查看不同城市的詳細信息,以及根據數據動態(tài)展示不同的統計信息,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • Vue2集成ElementUI實現左側菜單導航功能

    Vue2集成ElementUI實現左側菜單導航功能

    本文主要記錄兩個菜單的生成方式,通過在前端router/index.js中直接進行配置,后端返回菜單數據進行對應,可以通過后端返回的菜單數據控制權限,另一種是部門靜態(tài)導航,然后再拼接動態(tài)導航,生成完成頁面導航,感興趣的朋友一起看看吧
    2025-04-04
  • vue data有值,但是頁面{{}} 取不到值的解決

    vue data有值,但是頁面{{}} 取不到值的解決

    這篇文章主要介紹了vue data有值,但是頁面{{}} 取不到值的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue表單驗證?trigger:'blur'OR?trigger:'change'區(qū)別解析

    Vue表單驗證?trigger:'blur'OR?trigger:'change&ap

    利用?elementUI?實現表單元素校驗時,出現下拉框內容選中后校驗不消失的異常校驗情形,這篇文章主要介紹了Vue表單驗證?trigger:‘blur‘?OR?trigger:‘change‘?區(qū)別,需要的朋友可以參考下
    2023-09-09
  • Vue中watch監(jiān)聽屬性新舊值相同的問題解決方案

    Vue中watch監(jiān)聽屬性新舊值相同的問題解決方案

    這篇文章主要給大家分享了Vue中watch監(jiān)聽屬性新舊值相同問題解決方案,如果有遇到相同問題的朋友,可以參考閱讀本文
    2023-08-08
  • vue拖拽改變寬度的實現示例

    vue拖拽改變寬度的實現示例

    本文主要介紹了vue拖拽改變寬度的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • vue + canvas實現涂鴉面板的示例代碼

    vue + canvas實現涂鴉面板的示例代碼

    這篇文章主要給大家介紹了vue + canvas實現涂鴉面板的示例,文章通過代碼示例介紹的非常詳細,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • Vue.js中computed的基本使用方法

    Vue.js中computed的基本使用方法

    Vue.js中,computed屬性根據依賴進行緩存,只有依賴改變時才重新計算,這樣有效提高性能,computed屬性是響應式的,可以自動更新,并且默認是只讀的,它與methods的主要區(qū)別在于計算屬性具有緩存性,而方法每次調用都會執(zhí)行,使用computed可以使模板更加簡潔,提高應用性能
    2024-09-09
  • Vue實現的父組件向子組件傳值功能示例

    Vue實現的父組件向子組件傳值功能示例

    這篇文章主要介紹了Vue實現的父組件向子組件傳值功能,結合完整實例形式簡單分析了vue.js組件傳值的相關操作技巧,需要的朋友可以參考下
    2019-01-01

最新評論

闸北区| 连江县| 耿马| 岳阳县| 綦江县| 天祝| 孟村| 海门市| 自治县| 英山县| 枣阳市| 滨州市| 青阳县| 当涂县| 保亭| 柯坪县| 吴旗县| 洪雅县| 化隆| 弥勒县| 四平市| 太白县| 丽江市| 龙井市| 阿克苏市| 黄大仙区| 修武县| 东丽区| 崇明县| 大洼县| 萍乡市| 阳春市| 九寨沟县| 铜川市| 馆陶县| 咸丰县| 绥江县| 腾冲县| 榆中县| 大化| 隆化县|