兩個系統a和b
a為主,b為次
登入入口是a
a登入時,生成乙個隨機碼token,例如uuid
將token做為key,userid做為value,存入redis,設定過期時間
將token存入cookie,設定過期時間,設定domain
a,b系統通過cookie獲取token,然後從redis獲取userid
登出時,刪除redis中的token,刪除cookie
a登入時,將資訊存入session,然後生成乙個隨機碼token,例如uuid
將token做為key,session做為value,存入redis,設定過期時間
將token存入cookie,設定過期時間,設定domain
a,b系統通過cookie獲取token,然後從redis獲取session
判斷從redis獲取的session和原來的session是否一致,若不一致,則需要覆蓋原來的session(主要為了防止重複覆蓋和session不一致)
登出時,刪除redis中的token,刪除cookie
a系統 login:
// 系統session
session.set("userid","firetw");
...// session資訊存入map
// 隨機token
string token=uuid.randomuuid().tostring().tolowercase().replace("-", "");
// userid存入redis
redisutil.setstring("token_"+token, bean.getuserid(), pcexpire);
// sessionmap存入redis
redisutil.setmap("session_"+token, sessionmap, pcexpire);
//token存入cookie
cookie cookie = new cookie("wx_token", token);
cookie.setpath("/");
cookie.setdomain(".zpfdomain.com");
cookie.setmaxage(pcexpire);
response.addcookie(cookie);
a,b系統公用sessionutils
/**
*@param request
*/public
static
void
// 獲取redis的session
mapsessionmap = sessionutils.getsessionmap(request);
if (maputils.isempty(sessionmap)) else
}}/**
* 從redis中獲取session
/** * 獲取cookie中的token
* 根據名字獲取cookie(介面方法)
* *@author
*@param request
*@param name
* cookie名字
* 將cookie封裝到map裡面(非介面方法)
}
登出 logout
解決java集群的session共享的解決方案
1.客戶端cookie加密。一般用於內網中企業級的系統中,要求使用者瀏覽器端的cookie不能禁用,禁用的話,該方案會失效 2.集群中,各個應用伺服器提供了session複製的功能,tomcat和jboss都實現了這樣的功能。特點 效能隨著伺服器增加急劇下降,容易引起廣播風暴 session資料需要...
多Web伺服器之間共享Session的解決方案
一 提出問題 為了滿足足夠大的應用,滿足更多的客戶,於是我們架設了n臺web伺服器 n 2 在多台web伺服器的情況下,我們會涉及到乙個問題 使用者登陸一台伺服器以後,如果在跨越到另一台伺服器的時候能夠繼續使用客戶的session?二 解決方案 1.寫客戶端cookie的方式 當使用者登陸成功以後,...
多Web伺服器之間共享Session的解決方案
多web伺服器之間共享session的解決方案 很多開發中涉及到使用者的session驗證很保留的問題,這個問題比較有意思,總結了幾種方案,只供參考。問題提出 為了滿足足夠大的應用,滿足更多的客戶,於是我們架設了n臺web伺服器 n 2 在多台web伺服器的情況下,我們會涉及到乙個問題 使用者登陸一...