除了注销外,Spring Security还会在超时时删除会话cookie

时间:2014-02-14 17:12:26

标签: spring cookies spring-security session-cookies cas

Spring在注销时删除cookie完全无痛,你只需添加

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

现在,USERPREFS是应用程序中用于存储特定用户信息的cookie的名称,并且仅设置为会话cookie。当用户注销时,该cookie将被删除,因此其他用户将不会应用其他人的首选项。但是,我注意到,在会话超时的情况下,用户可以来到计算机终端,尝试刷新页面,重定向到登录屏幕,现在他们回到应用程序中,使用前一个用户的cookie !

显然,当没有cookie时,应用程序会动态提供这些值,但是为了避免一些额外的db调用,我检查请求中是否已存在cookie,如果确实存在则使用它。我可以停止这样做了,但是当应用程序必须重新建立新会话时,能够设置该cookie也会被删除会很好,特别是当用户切换时

1 个答案:

答案 0 :(得分:1)

我相信USERPREFS已登录用户的偏好设置。在这种情况下,在用户登录之前,您无法使用USERPREFS中设置的值。如果是这种情况,您应该在用户登录时设置保存在服务器端的用户首选项的值。这样,虽然您有USERPREFS cookie,但在用户登录之前不会使用该值。当用户登录时,您在cookie中设置登录用户的首选项,以便使用当前登录用户的首选项。