国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關于JWT(Json Web Token)的思考及使用心得

taohonghui / 3078人閱讀

摘要:什么是是一個開放的數據交換驗證標準,一般用來做輕量級的鑒權。由于許多接口設計是遵循無狀態的比如,所以是這一套機制的替代方案。組成由三部分組成頭部載荷簽名。

什么是JWT?

JWT(Json Web Token)是一個開放的數據交換驗證標準rfc7519(https://tools.ietf.org/html/r...,一般用來做輕量級的API鑒權。由于許多API接口設計是遵循無狀態的(比如Restful),所以JWT是Cookie Session這一套機制的替代方案。

組成

JWT由三部分組成頭部(header)、載荷(payload)、簽名(signature)。頭部定義類型和加密方式;載荷部分放不是很重要的數據;簽名使用定義的加密方式加密base64后的header和payload和一段你自己的加密key。最后的token由base64(header).base64(payload).base64(signatrue)組成。

使用方式

平時需要鑒權的接口需要傳這個token,可以post字段提交,但是一般建議放在header頭中 ,因為JWT一般配合https使用,這樣就萬無一失。

為什么安全?

首先token是服務端簽發,然后驗證時是用同樣加密方式把header、payload和key再加密遍 然后看是不是和簽名一致 如果不一致就說明token是非法的 這里主要靠的是加密(比如HS256)難以被攻破 至少目前吧 另外不得不說這里的加密對服務器來說是一個開銷 這也是JWT的缺點

使用

我很早就聽說過JWT 但那時候還沒用上 感覺近幾年前后端分離思想加速了JWT的使用 MVC前置到前端(VUE、REACT)后端只用提供API API強調無狀態 自然而然使用了JWT這套方案

之前做小程序時 沒有絕對使用JWT這套方案 我把它簡化了下

最近開發的一套項目用的是Laravel做后端提供API服務,所以自然而然使用了JWT,使用的擴展是tymon/jwt-auth 關于這套擴展機制的具體使用可以參考這篇文章 寫的很不錯:https://laravel-china.org/art...

項目使用時的具體細節 JWT三個時間概念

JWT有三個時間概念: 過期時間 寬限時間 刷新時間

上面那文章說token過了過期時間是不可刷新的,但其實是可以刷新的,我這邊使用時可以(開啟了黑名單機制和1min寬限時間) 但是過了刷新時間不能刷新這是肯定的

token刷新

可以借用laravel的中間件實現自動刷新 服務端判斷過期了但是在刷新時間內主動刷新一次 并把新的token在Header頭中返回給客戶端

記住我功能

我感覺定義刷新時間(比如一個月) + token自動刷新機制這一套就是記住我功能

不能主動銷毀Token

默認JWT這套方案好像不可以主動剔除用戶的,因為服務端不會存token,只是驗證。這和session不一樣。 但是我感覺可以借用黑名單機制 來判斷 中間件中判斷該token在剔除黑名單中就銷毀token并返回鑒權失敗

單點登錄

結合緩存比如redis存客戶端標識是可以的

多套用戶權限機制

比如客戶端有用戶端和商家端兩套用戶機制(不同表),可以在auth.php定義兩個guard 分別指定對應的model Login邏輯多帶帶寫 比如auth("userApi") auth("corpApi") 可以拿到不同的guard 刷新中間件是可以共用的 不過router中的middleware方法可以指定具體的middleware

為什么不同權限體系的刷新中間件可以公用

感覺是jwt-auth實現了這機制 驗證token時會根據sub字段判斷 我base64decode兩個token的payload后發現sub一個是1 一個是2

如果有問題歡迎指正!

本文最早發布于Rootrl"s blog https://rootrl.github.io/2018...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29483.html

相關文章

  • jwt前后端整合方案

    摘要:到這里,基于的前后端分離實現方案就搞定啦四關于的一些思考實際上,在使用的過程中有一個比較致命的缺點,就是一旦簽發了,在到期之前就會始終有效,除非服務器部署額外的邏輯。結語以上是關于基于的前后端分離實現方案的總結和思考。 一、jwt是什么 JWT全稱, JSON Web Token,是一個以JSON為基準的標準規范。 舉例:服務器認證以后,生成一個 JSON 對象,發回給用戶,就像下...

    nevermind 評論0 收藏0
  • 理解JWTJSON Web Token)認證python實踐

    摘要:認證服務器,即服務提供商專門用來處理認證的服務器。它與認證服務器,可以是同一臺服務器,也可以是不同的服務器。客戶端使用上一步獲得的授權,向認證服務器申請令牌。認證服務器對客戶端進行認證以后,確認無誤,同意發放令牌。 最近想做個小程序,需要用到授權認證流程。以前項目都是用的 OAuth2 認證,但是Sanic 使用OAuth2 不太方便,就想試一下 JWT 的認證方式。這一篇主要內容是 ...

    BigTomato 評論0 收藏0
  • 關于 jwt 你應該知道事情

    摘要:頭部需要一個頭部,用于描述關于該的最基本的信息,例如其類型以及簽名所用的算法等。簽發者需要準備一個可以確認自己身份的字符串,這個字符串我們稱之為。 什么是 jwt ? JWT 全稱叫 JSON Web Token, 是一個非常輕巧的規范。這個規范允許我們使用 JWT 在用戶和服務器之間傳遞安全可靠的信息。 jwt 使用場景 jwt 用圖廣泛,例如授權、鑒權等。具體一點的話,假如我們有一...

    leone 評論0 收藏0
  • 使用JWT保護你Spring Boot應用 - Spring Security實戰

    摘要:創建應用有很多方法去創建項目,官方也推薦用在線項目創建工具可以方便選擇你要用的組件,命令行工具當然也可以。對于開發人員最大的好處在于可以對應用進行自動配置。 使用JWT保護你的Spring Boot應用 - Spring Security實戰 作者 freewolf 原創文章轉載請標明出處 關鍵詞 Spring Boot、OAuth 2.0、JWT、Spring Security、SS...

    wemall 評論0 收藏0
  • 【轉載】json web token使用

    摘要:當使用一個時,其中一個挑戰就是認證。在傳統的應用中,服務端成功的返回一個響應依賴于兩件事。通常包括將發送的憑證與存儲的憑證進行檢查。第一種是使用請求來通過驗證,使服務端發送帶有的響應。 做了這么長時間的web開發,從JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用php框架thinkPHP,到現在的nodejs,我自己的看法是越來越喜...

    UsherChen 評論0 收藏0

發表評論

0條評論

taohonghui

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<