天天看點

在gin架構中使用JWT留

JWT全稱JSON Web Token是一種跨域認證解決方案,屬于一個開放的标準,它規定了一種Token實作方式,目前多用于前後端分離項目和OAuth2.0業務場景下。

什麼是JWT?

JWT全稱JSON Web Token是一種跨域認證解決方案,屬于一個開放的标準,它規定了一種Token實作方式,目前多用于前後端分離項目和OAuth2.0業務場景下。

為什麼需要JWT?

在之前的一些web項目中,我們通常使用的是Cookie-Session模式實作使用者認證。相關流程大緻如下:

使用者在浏覽器端填寫使用者名和密碼,并發送給服務端

服務端對使用者名和密碼校驗通過後會生成一份儲存目前使用者相關資訊的session資料和一個與之對應的辨別(通常稱為session_id)

服務端傳回響應時将上一步的session_id寫入使用者浏覽器的Cookie

後續使用者來自該浏覽器的每次請求都會自動攜帶包含session_id的Cookie

服務端通過請求中的session_id就能找到之前儲存的該使用者那份session資料,進而擷取該使用者的相關資訊。

這種方案依賴于用戶端(浏覽器)儲存Cookie,并且需要在服務端存儲使用者的session資料。

在移動網際網路時代,我們的使用者可能使用浏覽器也可能使用APP來通路我們的服務,我們的web應用可能是前後端分開部署在不同的端口,有時候我們還需要支援第三方登入,這下Cookie-Session的模式就有些力不從心了。

JWT就是一種基于Token的輕量級認證模式,服務端認證通過後,會生成一個JSON對象,經過簽名後得到一個Token(令牌)再發回給使用者,使用者後續請求隻需要帶上這個Token,服務端解密之後就能擷取該使用者的相關資訊了。

go