我已经使用grails过滤器和 session 侦听器部分实现了一个解决方案,该解决方案需要我修改web.xml。 session 侦听器会告诉我 session 何时结束,而grails过滤器会告诉我何时首次通过身份验证的用户调用任何 Controller 。
在我看来,这两者都是必需的,因为grails或acegi插件会自动创建一个新 session ,因此我需要grails过滤器来确定该 session 何时实际具有经过身份验证的用户。
我说的都是这些,有没有一种不需要过滤器和sessionListener的更简单方法。只是希望清理代码,所以当我以后需要重新使用它时,它仍然有意义
最佳答案
登录时会触发事件,因此,这是跟踪登录的最佳选择-如果用户在登录前在网站上浏览了一段时间,则 session 创建通常早于登录。请参阅此页面,甚至讨论处理程序:http://grails.org/AcegiSecurity+Plugin+-+Acegi+Events
注销非常棘手,因为用户可能会明确单击注销链接,或者可能只是关闭浏览器。如果他们关闭浏览器,他们的 session 将超时,但这将是最后一次单击后30分钟(除非您更改了默认值)。
如果要挂接显式注销,请按照“注销处理程序”部分中http://grails.org/AcegiSecurity+Plugin+-+Customizing+with+SecurityConfig所述注册LogoutHandler。
关于grails - 使用Grails和Acegi插件捕获登录/注销和登录尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231964/