我使用grails过滤器和会话监听器部分实现了一个解决方案,要求我修改web.xml。会话监听器告诉我会话何时结束,grails过滤器告诉我第一次使用经过身份验证的用户调用任何控制器。
在我看来,两者都是必需的,因为grails或者acegi插件会自动创建一个新会话,所以我需要使用grails过滤器来确定会话实际上何时拥有经过身份验证的用户。
我说所有这些都说,是否有一种更简单的方法,不需要过滤器和sessionListener。只是想清理代码所以当我需要稍后再回到它时它仍然有意义
答案 0 :(得分:2)
事件在登录时被触发,因此这是您跟踪登录的最佳选择 - 如果用户在登录前浏览网站一段时间,会话创建通常会早于登录。请参阅此页面,讨论偶数处理程序:{ {3}}
注销比较棘手,因为用户可能会明确点击注销链接,或者他们可能只是关闭浏览器。如果他们关闭浏览器,他们的会话将超时但是在他们最后一次点击后30分钟(除非您更改了默认值)。
如果要为显式注销添加一个钩子,请按照“注销处理程序”部分中的http://grails.org/AcegiSecurity+Plugin+-+Acegi+Events所述注册一个LogoutHandler。