我有一个基于Grails的Web应用程序,它使用Spring Security来处理用户登录等。我已经遇到了一些障碍,我希望更有经验的人能够指出我正确的解决方案。
应用程序具有消息的概念,可以从用户发送到用户以提供即时消息传递功能。整个系统中存在一个定时Ajax调用,用于警告用户任何新的传入消息。
我的问题是,由于我已经实现了这一点,每次执行ajax调用时,用户会话当然都会被刷新,因此永远不会超时。因此,手动“注销”是他们可以注销的唯一方式,而在会话到期之前会将其重定向到登录页面。
有没有人知道如何在仍有定时器功能的情况下完成自动注销?
我希望我可以使用spring security设置某种过滤器,或者我可以在定期调用的方法上使用注释来指示它不要刷新用户会话。
一如既往的帮助&评论表示赞赏。
答案 0 :(得分:2)
感谢Long指出我与他的评论不同的方向,我相信我现在有一个更好,更直观的用户友好解决方案。
我没有尝试改变后端的东西,而是使用一个非常容易配置的小jQuery脚本,非常适合我已经使用jQuery和jQuery UI的应用程序。
在一段特定时间后,会弹出一个jQuery对话框,模拟调暗背景并通知用户由于不活动而很快就会被注销。如果用户没有单击“继续工作”按钮,则会显示一个进度条,直到它为空,然后我将窗口位置更改为弹簧安全注销控制器URL,将它们带回到登录页面。它工作得很漂亮,很容易配置。
可在此处找到相关说明:http://kenbrowning.blogspot.co.uk/2010/04/are-you-still-there.html
感谢Ken Browning的图书馆。