我已經(jīng)設(shè)置了中間件來驗證并從 JWT 令牌中提取聲明(使用https://github.com/golang-jwt/jwt)。我現(xiàn)在的問題是我想以某種方式將該信息傳遞給路由處理函數(shù),以便它可以檢查存儲在令牌中的權(quán)限。我很難在這方面找到好的資源,但我看到了兩個建議,一個是在驗證后使用 REDIS 存儲令牌信息,另一個是使用 http.Request 上下文。我寧愿不使用 REDIS,所以我認(rèn)為它真的只給我留下了 Context?盡管我正在努力尋找關(guān)于整個上下文的體面資源,以及此類用例的上下文。另一種選擇是讓中間件驗證令牌,然后在處理程序函數(shù)本身內(nèi)提取 JWT 聲明而不再次驗證令牌?任何幫助/鏈接/建議將不勝感激......我知道在 Go 中有很多方法可以給貓剝皮,但我寧愿遵循最佳實踐。
1 回答

MYYA
TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊
這是一個很好的教程Context
:https ://go.dev/blog/context 。之前也有關(guān)于上下文和中間件的 SO 討論,例如How to pass context in golang request to middleware
您可以使用context.WithValue
將任意鍵-> 值映射添加到上下文,然后是請求的WithValue
方法:
它可以很簡單:
func middleware(rw http.ResponseWriter, req *http.Request, next http.Handler) { ctx := context.WithValue(req.Context(), "key", "value") next.ServeHTTP(rw, req.WithContext(ctx))}
- 1 回答
- 0 關(guān)注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消