2012-05-10 66 views
1

后,我有一个应用程序在Grails的(v1.3.7)开发,我们使用Spring Security的核心(V1.2.6)插件进行身份验证。在建立.war文件之后,我有将该应用程序部署在标准的tomcat服务器(v7.0.22)中。该应用程序运行良好。重定向会话超时(Grails的,Spring Security的核心,Tomcat)的

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

任何人都可以提出一个方法来轻松解决呢?是否有Tomcat的Spring Security的核心,没有工作的任何配置(如过期会话-URL)?

我在插件文档网站搜索,插件的博客网站,但没有找到。 This site建议我需要在代码中添加一个侦听器,并且我不愿意这么做,并且希望使用简单的配置,如this。任何人都可以指导什么

感谢预期

回答

2

HTTP是无状态的协议,会议仅仅是存储在客户端的cookie标记(+本地数据库),并且你不能处理这个作为一个事件。 '新客户端'和'会话过期'完全相同,只是意味着您无法识别当前请求的浏览器。对于大多数情况下,这也意味着用户没有通过验证(对原材料Spring Security的核心,至少)

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

顺便说一句,如果你有适当的春季安全配置,则必须重定向所有非授权用户登录页面。看起来,如果您已经通过了身份验证的用户,但在标准tomcat会话中仍然有一些用户数据集,那么您的应用程序体系结构出现了问题。至少有两种方法:避免你自己的用户会话,或者做一些基于会话的Spring Security认证配置。

+0

伊戈尔,你是对的。我只需要将@Secured(['IS_AUTHENTICATED_FULLY'])添加到不需要任何特定用户角色的所有控制器(对所有角色打开,但不是匿名)。为特定角色定义的控制器只是按预期工作。 –

相关问题