欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

gtoken替換jwt實現sso登錄的排雷避坑

 更新時間:2022年06月11日 14:48:57   作者:王中陽Go  
這篇文章主要為大家介紹了gtoken替換jwt實現sso登錄的排雷避坑,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

前段時間整理的文章:gtoken替換jwt實現sso登錄 | 帶你讀源碼 收到了大家積極的反饋,gtoken替換jwt實現sso登錄的開發(fā)過程是比較穩(wěn)健的,但是在我們測試聯調的過程中暴露出了很多問題。

如果大家也想使用gtoken替換jwt實現sso登錄,那么這篇文章可以減少很多大家debug的時間,分享一下我的踩坑之旅。

gtoken

服務端出于優(yōu)化項目體驗的考慮,替換了之前校驗登錄狀態(tài)的方式,由JWT替換為 Gtoken。

gtoken替換jwt解決的問題

  • 有效的避免了jwt服務端無法退出問題;
  • 解決jwt無法作廢已頒布的令牌,只能等到令牌過期問題;
  • 通過用戶擴展信息存儲在服務端,有效規(guī)避了jwt攜帶大量用戶擴展信息導致降低傳輸效率問題;

兼容JWT

gtoken替換jwt實現sso登錄在前后端通信上是能做到兼容JWT的。

我們服務端的替換操作對前端同學應該是無感的,因為后端做了兼容處理,不需要前端同學修改任何東西。

gtoken實現原理

gtoken的實現原理以及如何使用建議大家讀我這篇文章: gtoken替換jwt實現sso登錄 | 帶你讀源碼。

在本篇文章中就不贅述了,下面重點介紹踩坑之旅:

踩坑之旅

當大家遇到登錄問題時可以從這幾個方向定位問題:

1 gtoken版本

如果我們使用的版本是gf1.x.x,只能使用gtokenv1.4.X相關版本。

gtoken v1.5.0版本全面適配GoFrame v2.0.0。

如果遇到版本不一致的問題,比如提示這種:

可以通過指定gtoken版本解決,比如這樣:

go get github.com/goflyfox/gtoken@v1.4.1

如果我們是團隊多人協(xié)作,碰到需要指定依賴版本的問題,我們可以考慮把go.mod提交到git中。

在遇到這個問題之前,我的習慣是把go.mod添加的gitignore中。

大家有沒有更好的辦法來解決需要指定依賴版本的問題呢

2 gtoken存儲問題

如果你們的項目是集群應用,gtoken的存儲就需要使用gredis模式,而不是單機的gcache模式了。

這就需要我們生成token和獲取token的各個項目連接的redis是一致的。

如果你是集群應用,千萬要確保涉及到gtoken生成和驗證的各個項目連接的redis是一致的。

所以,大家遇到token校驗不通過時,可以首先排查一下配置文件,是不是連接redis庫的問題。

3 不能跨環(huán)境使用token

正如上面提到的,如果gtoken的存儲是使用redis中來實現集群項目的共享。

那我們是不能跨環(huán)境使用token的,因為我們的本機、開發(fā)、測試、預發(fā)布、生產等環(huán)境往往連接的是不同的redis。

4 測試賬號不規(guī)范問題

如果測試時多個用戶登錄同一個賬號,可能會出現奇葩問題。

究其原因是這樣的:

gtoken是允許多點登錄的,所以支持大家使用同一個賬號登錄。

但是!如果其中一個人做了退出登錄的操作,那么其他人的登錄態(tài)也會失效,需要重新登錄。

比如設置的token有效期是2個小時,且2小時內有請求操作,會刷新token的有效期。但是如果有多人登錄同一個賬號,其中一個人退出,那么其他人的登錄態(tài)也會失效的。

總結

  • gtoken版本問題
  • 連接的redis庫不一致問題
  • 是否跨環(huán)境使用了token,導致校驗不過的問題
  • 多人登錄同一個賬號,有退出操作,導致登錄態(tài)失效的問題

上面這些是我在開發(fā)中踩的坑,大家如果在集成gtoken時遇到登錄態(tài)問題可以從這幾個角度排查問題,更多關于gtoken替換jwt登錄sso避坑的資料請關注腳本之家其它相關文章!

相關文章

  • 用go gin server來做文件上傳服務

    用go gin server來做文件上傳服務

    今天小編就為大家分享一篇關于用go gin server來做文件上傳服務,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Go語言開發(fā)必知的一個內存模型細節(jié)

    Go語言開發(fā)必知的一個內存模型細節(jié)

    這篇文章主要為大家介紹了Go語言開發(fā)必知的一個內存模型細節(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 詳解Go?將在下個版本支持新型排序算法pdqsort

    詳解Go?將在下個版本支持新型排序算法pdqsort

    這篇文章主要介紹了Go?將在下個版本支持新型排序算法:pdqsort,而就Go支持pdqsort算法,在HN上引起了不少的討論,有人表示,我們研究排序算法這么久了,很驚訝我們還能想出能產生實際改進的優(yōu)化方案。對此,你怎么看,快快上手體驗一下吧
    2022-04-04
  • go語言區(qū)塊鏈實戰(zhàn)實現簡單的區(qū)塊與區(qū)塊鏈

    go語言區(qū)塊鏈實戰(zhàn)實現簡單的區(qū)塊與區(qū)塊鏈

    這篇文章主要為大家介紹了go語言區(qū)塊鏈的實戰(zhàn)學習,來實現簡單的區(qū)塊與區(qū)塊鏈示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 使用golang引入外部包的三種方式:go get, go module, vendor目錄

    使用golang引入外部包的三種方式:go get, go module, ve

    這篇文章主要介紹了使用golang引入外部包的三種方式:go get, go module, vendor目錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Golang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由字母數字和_(下劃線)組成,并且只能以字母和_開頭,更詳細內容請看下面文章吧
    2021-10-10
  • 解決Goland 提示 Unresolved reference 錯誤的問題

    解決Goland 提示 Unresolved reference 錯誤的問題

    這篇文章主要介紹了解決Goland 提示 Unresolved reference 錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 探索Golang實現Redis持久化AOF實例

    探索Golang實現Redis持久化AOF實例

    這篇文章主要為大家介紹了Golang實現Redis持久化AOF實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Go語言報錯:'godoc'?不是內部或外部命令,也不是可運行的程序(godoc無法使用處理)解決方法

    Go語言報錯:'godoc'?不是內部或外部命令,也不是可運行的程序(godoc無法使用處理)解決

    這篇文章主要介紹了Go語言報錯:'godoc'?不是內部或外部命令,也不是可運行的程序(godoc無法使用處理)解決方法,詳細描述了Go語言godoc命令無法使用的原因、解決方法與相關注意事項,需要的朋友可以參考下
    2024-01-01
  • Golang學習筆記(四):array、slice、map

    Golang學習筆記(四):array、slice、map

    這篇文章主要介紹了Golang學習筆記(四):array、slice、map,本文分別講解了這3個類型的聲明&賦值、元素訪問、其它操作,需要的朋友可以參考下
    2015-05-05

最新評論