iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Modern Web

Vue+Django+MongoDB+Nginx 全端開發系列 第 16

Json web token authentication --part1: JWT introduction

  • 分享至 

  • xImage
  •  

session & token

驗證機制早期是用 session,server 這裡會發一個 session 給 client,並在資料庫記錄這個 session 屬於誰,而且每個裝置都會記一組 session,這會造成 server 這邊需要記錄大量的資料。

後來發展出 token,client 這邊會收到 server 發的 token,而 server 這邊只做一個解碼器,用來驗證 client 的 token,這樣 server 這邊就不用記一堆資料了,是不是很聰明啊?

Json web token (JWT)

結構

JWT 的結構長這樣,解碼後可獲得有意義的資訊

sdfghjk.ertyuil.zxcvbn

像是由三個亂碼組成,由 . 做區隔,分別是 header, payloadsignature

  • header 這邊記錄的是加密算法以及 token 類型
  • payload 你可以設計想要放什麼資訊,這邊不會放什麼機密的資料,因為這一段的資料就是要給別人看的,比方說你可以放個 username, response status 等等
  • signature 這就是用來驗證的部分啦,以 django 來說,會提供一組 secret key 然後再加上 JWT 的加密算法,這樣就會產生用來驗證的 signature

驗證原理

server 這邊會發給 client 兩種 token,一種是 access token 用來做身份的驗證,一般來說時效會設定比較短,然後前端這邊不斷向後端要求更新 token,另一種是 refresh token,用來看你是否有權限去更新 token 的 token。

接下來的三篇會講解在前後端要如何實作


上一篇
用 POST 串起前後端
下一篇
Json web token authentication --part2: Django
系列文
Vue+Django+MongoDB+Nginx 全端開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言