redis怎么保存session Openresty怎么跟后端tomcat共用session?
Openresty怎么跟后端tomcat共用session?OpenResty和Tomcat分工不同。像這種異構(gòu)模式,如果要共享會(huì)話會(huì)話,使用傳統(tǒng)的Cookie模式是非常昂貴的。那么如何實(shí)現(xiàn)這種異構(gòu)或
Openresty怎么跟后端tomcat共用session?
OpenResty和Tomcat分工不同。像這種異構(gòu)模式,如果要共享會(huì)話會(huì)話,使用傳統(tǒng)的Cookie模式是非常昂貴的。
那么如何實(shí)現(xiàn)這種異構(gòu)或者集群的分布式環(huán)境,或者不同域名之間的會(huì)話共享呢?要了解這個(gè)問(wèn)題,首先要了解Session的工作原理。
會(huì)話存儲(chǔ)在服務(wù)器端,存儲(chǔ)一般是內(nèi)存或文件的形式。服務(wù)器可以存儲(chǔ)許多會(huì)話。如果我們需要在多個(gè)會(huì)話中操作一個(gè)特定用戶的會(huì)話,我們必須知道這個(gè)會(huì)話的唯一標(biāo)識(shí)。這個(gè)標(biāo)識(shí)符是SessionID。不同的服務(wù)器/容器有不同的算法來(lái)生成SessionID。啟用會(huì)話后,瀏覽器發(fā)送一個(gè)請(qǐng)求,SessionID被寫(xiě)入用戶的Cookie ;的瀏覽器。來(lái)自瀏覽器的后續(xù)請(qǐng)求會(huì)將Cookie附加到請(qǐng)求頭,并將其傳遞給服務(wù)器。服務(wù)器可以根據(jù)這個(gè)SessionID找到服務(wù)器對(duì)應(yīng)的會(huì)話進(jìn)行操作。
這樣,只要我們能共享SessionID,會(huì)話就能被共享,所以我們可以采用以下方案:
1、會(huì)話入庫(kù)存儲(chǔ)
將會(huì)話保存在數(shù)據(jù)庫(kù)中,這樣OpenResty和Tomcat都可以操作數(shù)據(jù)庫(kù),輕松取出數(shù)據(jù)庫(kù)中的會(huì)話。
2.會(huì)話存儲(chǔ)在NoSQL。
這個(gè)方案類似于會(huì)話倉(cāng)儲(chǔ),原理是一樣的,只不過(guò)我們用的是NoSQL(比如R
Token流程是什么?怎么解決超時(shí)問(wèn)題?
令牌的過(guò)程可以通過(guò)分析登錄過(guò)程、退出過(guò)程和替換令牌的過(guò)程來(lái)討論。
登錄流程用戶發(fā)送登錄請(qǐng)求。
認(rèn)證系統(tǒng)驗(yàn)證用戶的登錄查詢數(shù)據(jù)庫(kù)是否存在。
如果用戶存在,就會(huì)生成一個(gè)令牌并存儲(chǔ)在Redis中,然后返回給客戶端。
如果用戶不存在,會(huì)提示登錄失敗。
驗(yàn)證令牌客戶端
將令牌密鑰附加到標(biāo)頭。
計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)器
從標(biāo)頭中取出令牌密鑰。
通過(guò)令牌密鑰和Redis中的相關(guān)t確定匹配的信息。
退出請(qǐng)求過(guò)程的前端發(fā)送退出請(qǐng)求。
認(rèn)證系統(tǒng)驗(yàn)證令牌信息-從Redis查詢相關(guān)令牌信息。
如果令牌無(wú)效,則表明令牌的前端交換失敗。
如果令牌有效,則刪除令牌并提示前端成功退出。
下面討論替換令牌的過(guò)程,作為令牌超時(shí)的解決方案。
讓 讓我們來(lái)談?wù)労蠖颂幚砹鞒?
前端請(qǐng)求替換令牌
認(rèn)證系統(tǒng)驗(yàn)證相關(guān)的redis信息。
如果令牌無(wú)效,替換將會(huì)失敗。
如果令牌有效,從redis中刪除相關(guān)redis,返回前端新令牌。
替換令牌前端處理流程
前端獲取令牌,并在登錄成功后將其設(shè)置在cookie中。
請(qǐng)求服務(wù)接口時(shí)獲取令牌,判斷是否該交換令牌。
如果可以調(diào)用替換令牌接口,請(qǐng)重新生成令牌并將前端設(shè)置返回給cookie。
以上是令牌的請(qǐng)求流程和令牌超時(shí)的解決方法?。?/p>
希望能幫到你??!