限制多視窗重複登陸

2021-08-24 22:44:28 字數 1648 閱讀 8753

我們都知道web伺服器通過識別客戶請求中的session id來判斷是否返回新的httpsession,一般情況下這個session id是儲存在客戶端cookie中,準確的說是儲存在session cookie中。 也就是說一旦關閉瀏覽器,此session cookie消失,儲存其中的session id也隨之消失。再新建的瀏覽器再次發起請求時,伺服器端找不到對應的session id就會新建乙個httpsession返回給客戶。

另外,如果能順利地將session id儲存到持久化cookie上,會出現另外乙個問題。不同使用者在同一臺pc上登陸系統,卻傳送相同的session id給伺服器,顯然不對。因此,得讓存在持久化cookie上的session id根據系統登陸使用者不同而不同,這需要在把cookie放到http head之前,拿到session id並根據當前登陸使用者做處理。不過對cookie的處理是在伺服器端執行reqeust.getsession()的時候直接去cookie中的jsessionid屬性,我怎麼

才能讓cookie中儲存多個jsessionid呢

順便提一下,我們生產環境上4臺web server,配置了session共享和session粘性,即對客戶來說,就跟只有一台web一樣。另外,我們有sso,但是cookie.setmaxage(-1);於是跨瀏覽器的話session又是新的了

[quote="case0079"]url rewrite[/quote]

url rewrite前提是伺服器端給返回乙個jsessionid,但如果客戶端給過去的jsessionid每次都不同,如何指望返回來的東東的正確性呢。

同上,棘手的不是server side,而是client side

[quote="鳳舞凰揚"][quote]好像伺服器就是根據session id來判斷是否是同乙個使用者的,如果是一有的seesion id,則會將請求分流到之前處理這個請求的節點上。現在的問題是session id在每次ie關掉之後在客戶端都沒有了,伺服器沒辦法進行識別。

不知道我的理解是否正確 [/quote]

我們常說的session id是伺服器判斷與之相連線的客戶端的會話,實質上,和我們另外乙個角度理解的使用者是有區別的。你說的沒錯,如果已經存在session,就**。不過後面一句就陷進去了。其實我前面說過,你需要傳遞另外乙個東西,jsessionid,你在很多**都可以看到這種應用(尤其是ibm的),對於**伺服器來說,是否存在http session並不重要,沒有建立乙個就是。你session中儲存的資料並不在其中,而是在你對應的jvm節點中,而它是可以通過jsessionid這樣的方式去獲取的。

至於說怎麼識別這樣的東西,其實所有的支援負載均衡多個jvm節點並存的伺服器都支援。或者大不了如樓上所說,自己建立**快取,自己在程式中識別這樣的request引數。[/quote]

大概明白您的意思了。即把session id存放在jvm session中而非http session中,跟之前那位兄弟提到的memcache方案基本相似。但關鍵是,這個seesion id在第一次被httpsession返回來後,如果想在下次發起請求是將其原樣送給伺服器,就必須有乙個機制在客戶端能讓其存活下來,而以瀏覽器為單位的session cookie是做不到的。

也就是說,問題的關鍵不是伺服器端沒辦法識別jsessionid,而是這個jsessionid在客戶端沒法持久化。除非...我能通過在客戶端js上自己動手偽造乙個跟登入客戶id相關的jsessionid出來

工作列多視窗重疊

windowsxp並不像win7工作列視窗有那麼好的靈活性。太多視窗,冗餘於工作列,看著會很煩。如何解決?右鍵點選xp工作列 屬性 分組相似工作列按鈕,這個選項框勾上。這樣的話的確是會重疊視窗,但是系統預設引數是視窗達到8個以上才會重疊相似視窗,8個視窗已經充滿工作列,看著也會很多 很煩,只需要設定...

oracle限制使用者登陸

oracle可以通過建立trigger來對使用者登陸做出限制,例子如下 create or replace trigger tri denylogin db after logon on database declare osuser varchar2 30 ip varchar2 30 begin...

oracle 限制IP登陸

root 使用者編輯 vi sqlnet.ora tcp.validnode checking yes tcp.invited nodes 允許訪問的ip列表,各ip之間用逗號分隔 tcp.excluded nodes 限制訪問的ip列表,個ip之間用逗號分隔 注意 不能同時使用tcp.invite...