如何實現(xiàn)單點登錄功能 Jwt的token如何像session一樣去延長時間?
Jwt的token如何像session一樣去延長時間?隨著技術(shù)的發(fā)展和分布式web應(yīng)用的普及,通過會話管理用戶登錄狀態(tài)的成本越來越高。因此,它逐漸發(fā)展成為一種令牌方式來進行登錄身份驗證,然后利用令牌獲
Jwt的token如何像session一樣去延長時間?
隨著技術(shù)的發(fā)展和分布式web應(yīng)用的普及,通過會話管理用戶登錄狀態(tài)的成本越來越高。因此,它逐漸發(fā)展成為一種令牌方式來進行登錄身份驗證,然后利用令牌獲取緩存在redis中的用戶信息。隨著JWT的出現(xiàn),驗證方法更加簡單方便。它不使用redis緩存,而是直接基于令牌取出保存的用戶信息,驗證令牌的可用性,使單點登錄更容易。
JWT通常包含兩個令牌:訪問令牌和刷新令牌。當(dāng)用戶通過登錄等方式成功驗證身份時,服務(wù)器會生成一個訪問令牌和一個刷新令牌,并返回前端存儲。兩個令牌的過期時間都將在服務(wù)器上設(shè)置,但訪問令牌的過期時間較短,而刷新令牌的過期時間較長。當(dāng)當(dāng)前端向服務(wù)器發(fā)送請求時,訪問令牌將與請求一起發(fā)送到服務(wù)器,以驗證請求者的身份。當(dāng)服務(wù)器發(fā)現(xiàn)訪問令牌已過期時,它將返回失敗信息。此時,前端需要使用refresh token從服務(wù)器申請新的訪問令牌。如果刷新令牌沒有問題,服務(wù)器將生成一個新的訪問令牌。如果刷新令牌已過期,則需要要求用戶再次登錄以驗證其身份。
總之,JWT擴展是通過使用過期時間較長的刷新令牌重新申請新的訪問令牌來實現(xiàn)的。當(dāng)刷新令牌也已過期時,不可能延長時間。
php實現(xiàn)web系統(tǒng)單點登錄?
個人理解:單點登錄是在web上,每個系統(tǒng)使用相同的用戶表,以確保用戶登錄后不必登錄多個系統(tǒng)。我公司采用CAS第三方系統(tǒng)實現(xiàn)單點登錄。我做了一個簡單的單點登錄。首先,用戶表是一致的。登錄a系統(tǒng)時,在本次跳轉(zhuǎn)過程中,我點擊本系統(tǒng)中另一個B系統(tǒng)的訪問地址,a系統(tǒng)將其加密的令牌發(fā)送給B系統(tǒng),B系統(tǒng)獲得該令牌進行解密,從而獲得登錄用戶的信息。此時,您只需將用戶信息寫入系統(tǒng)用戶的登錄cookie,以免重復(fù)登錄。我不太了解細(xì)節(jié)。簡單的理解是,用戶信息在各種系統(tǒng)中傳輸,登錄后的cookie根本不可能被修改,除非系統(tǒng)已經(jīng)考慮到了單點,并且已經(jīng)開發(fā)出來。參考方案:
這要求現(xiàn)有系統(tǒng)的域名和需要單點的系統(tǒng)的域名是同一域名下的子域名。登錄令牌通過cookie共享共享,但是前端登錄請求必須重寫。
也可以說是鑒權(quán)平臺,即對于所有單點系統(tǒng),條目都存儲在鑒權(quán)平臺的接口中,負(fù)責(zé)登錄。進入其他系統(tǒng),只需攜帶相關(guān)信息即可。這就需要我們編寫一個統(tǒng)一的入口接口,單點系統(tǒng)需要為這種跳轉(zhuǎn)模式釋放權(quán)限
希望我的回答能對您有所幫助