當前位置: 妍妍網 > 碼農

Token、Cookie、Session的作用及具體區別

2024-07-16碼農

Token、Cookie、Session的作用及具體區別

一、作用

  1. Token

  • 身份驗證 :Token用於驗證使用者的身份,確保使用者有許可權存取特定資源。

  • 授權 :Token可以包含授權資訊,指示使用者被授予了何種許可權來存取特定資源。

  • 單點登入 :透過Token可以實作使用者在多個系統中的單點登入,提高使用者體驗。

  • 無狀態性 :Token本身包含了使用者身份資訊和許可權,伺服器不需要保存會話狀態,減輕了伺服器的負擔。

    1. Cookie

  • 使用者身份辨識 :Cookies可以用來標識和辨識使用者,幫助網站記住使用者的登入狀態和個人化設定。

  • 購物車和購買記錄 :在網上購物時,Cookies可以跟蹤使用者添加到購物車中的商品和購買記錄,確保購物過程的連續性和方便性。

  • 網站分析和統計 :網站使用Cookies來收集匿名的使用者存取數據,如存取次數、頁面瀏覽量等,用於網站的分析和最佳化。

  • 廣告定向 :一些廣告商使用Cookies來跟蹤使用者在網上的活動,從而投放更加相關和個人化的廣告。

    1. Session

  • 使用者身份驗證和管理 :Session在使用者登入後可以保存使用者的身份資訊,以便後續的請求可以辨識使用者並進行相應的許可權控制。

  • 數據共享 :Session保存在伺服端,可以跨請求共享數據,使得在同一個使用者的多個請求之間能夠共享數據並保持數據的一致性。

  • 數據一致性 :Session的數據儲存在伺服端,相對於儲存在客戶端的Cookie來說,更加安全可靠。

  • 業務流程控制 :Session可以用於控制業務流程,在不同的請求之間共享狀態資訊。

  • 緩存機制 :伺服端可以利用Session作為緩存機制,提高系統的效能和響應速度。

  • 二、具體區別

    Token Cookie Session
    儲存位置 客戶端(通常儲存在瀏覽器的LocalStorage或SessionStorage中,也可在HTTP請求的Header中攜帶) 客戶端(儲存在使用者電腦或行動裝置的硬碟或記憶體中) 伺服端(儲存在伺服器的記憶體中或資料庫中)
    安全性 較高,因為Token通常包含加密資訊,並且每次請求都攜帶,減少了被截獲的風險 較低,因為Cookie儲存在客戶端,容易被使用者檢視或篡改 較高,因為數據儲存在伺服端,且可以透過HTTPS等方式加密傳輸
    儲存大小 無固定限制,但通常不會太大,因為每次請求都會攜帶 單個Cookie保存的數據不能超過4KB 理論上沒有限制,但過多的Session會占用伺服器資源
    有效期 可以設定較長的時間,也可以設定為短期(如JWT Token) 可以設定為長時間保持,也可以設定過期時間 依賴於伺服端的設定,一般客戶端關閉或Session超時就會失效
    跨域支持 支持跨域請求,因為Token是透過HTTP請求的Header攜帶的 跨域支持較弱,因為瀏覽器的同源策略限制 不支持跨域,因為Session是基於伺服端儲存的,每個網域名稱下的Session是獨立的
    無狀態性 是,伺服器不需要保存會話狀態,Token本身包含了所有必要的資訊 否,Cookie需要瀏覽器保存狀態,伺服器也需要在會話間保持狀態資訊 是,但Session數據儲存在伺服端,伺服器需要維護會話狀態
    套用場景 行動應用、Web API、分布式系統等需要無狀態認證的場景 Web網站、電商網站等需要使用者身份辨識和會話管理的場景 需要伺服端儲存和管理使用者會話資訊的場景

    總結

    Token、Cookie和Session在Web開發中各有其獨特的作用和適用場景。Token適用於需要無狀態認證和授權的場景,Cookie適用於需要使用者身份辨識和會話管理的場景,而Session則更適合於伺服端需要儲存和管理使用者會話資訊的場景。在實際套用中,可以根據具體需求選擇合適的機制來實作使用者認證和會話管理。