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