2013-07-10 28 views
1

爲什麼在使用領域時,用戶主體不會保留在tomcat會話中?有沒有辦法配置閥門領域或會話來堅持它?這種技術是否存在安全問題?是否有用戶主體不會堅持tomcat會話的原因?

我問的原因是,每次我重新部署我們的應用程序(至少每天幾次),它就會將每個人都記錄在領域之外。現在並不可怕,但我們需要一個生產解決方案。

+0

我正面臨同樣的問題。當我停止tomcat SESSION.ser文件被寫入文件系統。當我啓動它並刷新瀏覽器窗口時,會讀取並刪除SESSION.ser。主要信息在'FormAuthenticator.doAuthenticate()'中丟失。 – andy

回答

0

會話不會在Web應用程序之間共享,因此當您部署新版本的應用程序時,每個用戶都將獲得一個新會話,因此必須重新登錄。

一種選擇是使用並行部署。這可以讓應用程序的多個版本並行運行。如果已部署版本001,則所有用戶都將使用版本001.在部署版本002時,擁有版本001的sesison的用戶將繼續使用它。沒有有效會話的新用戶將被定向到版本002.正在使用版本爲001的會話過期的用戶在下一個請求時將被定向到版本002。

如果您取消部署舊版本,仍然有會話的任何用戶都將被註銷並移至最新版本。

+0

我想我不應該使用術語部署。原諒我對Tomcat術語的細節和知識的缺乏。當我通過eclipse對我的項目進行一些小的修改並進行測試時,會話仍然存在,但是委託人不會。顯然他們不是可序列化的,但我爲什麼好奇。 – bzuillsmith

+0

@Zill我不明白。如果每個人都註銷,則不能說會話持續。 – EJP

+0

@EJP當服務器重置時,它似乎保留了特定用戶的會話變量(用戶仍然有一個未刷新的會話cookie在整個刷新過程中「持續」在服務器上,但是,領域認證者不記得用戶並詢問他們再次登錄,因此我最終得到了現有的會話變量,但沒有用戶主體。爲什麼不把這些委託人存儲在跨服務器「刷新」的會話中(或者任何你會稱之爲的)?這是安全風險嗎?猜猜可能有一種方法讓人們修改它們,這是一種安全風險? – bzuillsmith