会话超时后重定向(Grails,Spring Security Core,Tomcat)

时间:2012-05-10 09:49:33

标签: grails spring-security tomcat7

我有一个用 Grails (v1.3.7)开发的应用程序,我们使用 Spring Security Core (v1.2.6)插件进行身份验证。在构建.war文件之后,我已经在标准的tomcat服务器中部署了应用程序(v7.0.22)。应用程序运行正常。

我知道我可以在构建应用程序之前或在tomcat服务器本身中配置web.xml中的会话超时时间。但是,我希望(另外)在会话超时时自动将任何页面重定向到登录页面。因为,如果会话超时并且用户单击任何链接或只是刷新当前页面,则会出现tomcat错误。

有人能建议一种轻松解决问题的方法吗?是否有任何配置(如expired-session-url)在 Tomcat Spring Security Core 中完成这项工作?

我在插件doc网站,插件博客网站上搜索但没有找到。 This site建议我需要在代码中添加一个监听器,我不愿意这样做,并希望使用像this这样的简单配置。任何人都可以指导任何事情吗?

感谢您的期待

1 个答案:

答案 0 :(得分:2)

Http是无状态协议,会话只是存储在客户端cookie(+本地数据库)上的标记,您无法将其作为事件处理。 “新客户端”和“会话已过期”完全相同,只是意味着您无法识别当前请求的浏览器。对于大多数情况,它还意味着用户未经过身份验证(至少对于原始的Spring Security Core)

对于你的情况,你已经有会话过期的处理程序,当你收到这个tomcat错误时。只需处理此错误,并将用户重定向到登录页面。

顺便说一句,如果你有适当的Spring Security配置,它必须将所有非授权用户重定向到登录页面。如果您已经过身份验证的用户,但在标准的tomcat会话中仍然有一些用户数据,那么您的应用程序架构似乎已经出现了问题。至少有两种方法:避免自己的用户会话,或者进行某种基于会话的Spring Security身份验证配置。