1

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

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

任何人都可以提出一种轻松解决它的方法吗?TomcatSpring Security Core中是否有任何配置(如 expired-session-url)可以完成这项工作?

我在插件文档站点、插件博客站点中进行了搜索,但没有找到。该站点建议我需要在代码中添加一个侦听器,我不想这样做,并希望使用这样的简单配置。任何人都可以指导任何事情吗?

感谢期待

4

1 回答 1

2

Http是无状态协议,会话只是存储在客户端cookie(+本地db)上的标记,您不能将其作为事件处理。'new client' 和 'session expired' 完全一样,只是表示您无法识别当前请求的浏览器。在大多数情况下,这也意味着用户未经过身份验证(至少对于原始 Spring Security Core)

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

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

于 2012-05-10T10:26:41.727 回答