2014-02-14 167 views
0

Spring讓我們消除對註銷餅乾完全無痛的,你只需要添加上除了超時春季安全刪除會話cookie註銷

<security:logout logout-url="/j_acegi_logout" logout-success-url="${server.environment.baseUrl}j_spring_security_logout" delete-cookies="USERPREFS"/> 

現在,用戶首選項是在應用程序中,對於存儲信息的cookie名特定用戶,並且僅被設置爲會話cookie。當用戶註銷時,該cookie將被刪除,以便其他用戶不會應用其他人的偏好。不過,我注意到,在會話超時的情況下,用戶可能會來到計算機終端,嘗試刷新頁面,重定向到登錄屏幕,現在他們回到應用程序中,以前的用戶cookie !

很明顯,當沒有cookie時,這些值是由應用程序動態提供的,但爲了避免一些額外的db調用,我檢查cookie是否已經存在於請求中,如果存在,就使用它。我可以停止這樣做,但能夠將該cookie設置爲在應用程序必須重新建立新會話時也會被刪除,尤其是當用戶切換時

回答

1

我相信USERPREFS是登錄用戶的優先。在這種情況下,用戶登錄前無法使用USERPREFS中設置的值。如果是這種情況,您應該在用戶登錄時根據用戶偏好設置保存在服務器端的值。這樣,儘管您有Cookie,但您不會在用戶登錄之前使用該值。當用戶登錄您可以在Cookie中設置登錄用戶的偏好,以便使用當前登錄的用戶偏好。

+0

對,我當然可以做到這一點。我問的是,如果Spring/Spring Security沒有必要這樣做,那麼這是合理的方式,因爲我可以在會話過期時節省數據庫調用次數,但它仍然是同一個人只是刷新頁面 – chrismarx

+0

Nothing建成春季安全。但是,如果登錄用戶與Cookie中的用戶名不同,則可以將用戶名保存爲Cookie中的一項,並用新值刷新。但是,我相信一旦用戶登錄數據庫調用獲取用戶首選項不會有任何重大的開銷。 – RaviH