後端校驗使用者名稱密碼,生成token返回給前端,有時也會儲存token到使用者表或者儲存到全域性map中
toekn的生成規則一般是base64(uid+(md5(u_pwd+secret)))
前端拿到token之後,儲存到localstrage中
前端再請求的時候要把token放到header來過來
後端有乙個驗證過濾器,會統一校驗所有的請求,取出token進行校驗
去到token後base64解碼,然後根據使用者id查詢使用者密碼,結合金鑰secret重新生成token判斷和發過來的token是否一致
如果toekn後端儲存到了使用者表對應的字段或者全域性map中,在校驗的時候就直接拿使用者id到map或者表中去查token判斷和傳過來的是否一致。
這種方案基本擺脫了session的依賴,但是後端服務還是儲存了token相關資訊,並沒有做到完全的無狀態化。
網上關於jwt(json web token)的介紹博文非常多,這裡不過多贅述,我重點記錄一下自己的理解。
jwt的格式如
生成規則如下header.payload.signature
hmacsha256(
base64urlencode(header) + "." +
base64urlencode(payload),
secret)
使用的時候,基本和我上述的使用流程一樣,區別在於校驗規則以及後端的處理。
後端按照加密規則生成token值返回給前端
前端每次請求的時候都要把token帶過來
後端同樣需要有過濾器對token進行驗證
驗證方式是先解碼token,然後取出header和payload,使用金鑰secret按照加密規則生成token,校驗token是否有效
最大區別在於,jwt的規範不要求後端儲存相關資訊,生成token的規則以及需要的資料在發過來的的token中可以取到。但基本上思路還是一致的,只是相對而言jwt更加規範一些。
參考文獻
json web token 入門教程
基於JWT的Token認證機制實現
想要獲取全網 最新最全的20t 資料 請新增qq群 1022848328 乙個jwt 實際上就是乙個字串,它由三部分組成,頭部 載荷與簽名。頭部 header 頭部用於描述關於該 jwt的最基本的資訊,例如其型別以及簽名所用的演算法等。這也可以 被表示成乙個 json 物件。載荷 playload ...
iOS 開發之基於JWT的Token認證機制及解析
在移動端和服務端通訊中,一般有兩種認證方式 token 和 session。1 session cookie 認證機制 在服務端建立乙個session物件,同時在客戶端的瀏覽器端建立乙個cookie物件 通過客戶端發來的請求中攜帶的cookie物件與伺服器端的session物件進行匹配,來實現認證 ...
jwt 私鑰 使用JWT實現Token認證
json web token的結構是什麼樣的 json web token由三部分組成,它們之間用圓點 連線。這三部分分別是 header payload signature 因此,乙個典型的jwt看起來是這個樣子的 xx.yyyyy.zzzzz 接下來,具體看一下每一部分 header heade...