驗證機制早期是用 session,server 這裡會發一個 session 給 client,並在資料庫記錄這個 session 屬於誰,而且每個裝置都會記一組 session,這會造成 server 這邊需要記錄大量的資料。
後來發展出 token,client 這邊會收到 server 發的 token,而 server 這邊只做一個解碼器,用來驗證 client 的 token,這樣 server 這邊就不用記一堆資料了,是不是很聰明啊?
JWT 的結構長這樣,解碼後可獲得有意義的資訊
sdfghjk.ertyuil.zxcvbn
像是由三個亂碼組成,由 .
做區隔,分別是 header
, payload
和 signature
header
這邊記錄的是加密算法以及 token 類型payload
你可以設計想要放什麼資訊,這邊不會放什麼機密的資料,因為這一段的資料就是要給別人看的,比方說你可以放個 username, response status 等等signature
這就是用來驗證的部分啦,以 django 來說,會提供一組 secret key 然後再加上 JWT 的加密算法,這樣就會產生用來驗證的 signature
server 這邊會發給 client 兩種 token,一種是 access token
用來做身份的驗證,一般來說時效會設定比較短,然後前端這邊不斷向後端要求更新 token,另一種是 refresh token
,用來看你是否有權限去更新 token 的 token。
接下來的三篇會講解在前後端要如何實作