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