Grails Spring Security - 会话超时后重新登录时重新加载会话变量

Posted

技术标签:

【中文标题】Grails Spring Security - 会话超时后重新登录时重新加载会话变量【英文标题】:Grails Spring Security - reload session variables on relogin after session timeout 【发布时间】:2012-12-28 13:30:47 【问题描述】:

我在我的 grails 应用程序中使用 spring 安全核心。我的应用程序有很多调用控制器的 ajax 调用。反过来,控制器依赖于一些会话变量来满足请求。我目前能够在会话超时时正确显示 ajax 登录表单。但是,它只使用新创建的用户对象创建一个新会话。存储在会话中的所有其他对象都将丢失。

有没有办法在会话超时后用户重新登录后重新加载会话变量?

【问题讨论】:

这确实与 Spring Security 无关。您的容器正在破坏会话。缺少用户对象是什么触发spring security告诉你,你需要重新登录。如果您不想丢失会话数据,请将其保存到数据库/cookie。 会话范围的目的是在会话结束时将其擦除。如果您需要在会话之间共享数据,您应该重新考虑您的架构并将数据保存在数据库(服务器端)或 cookie(客户端)中。 感谢 Gregg 和 moeTi。你们让我朝着正确的方向思考。由于我只在会话中添加了几个变量,我不妨将它们作为全局 ajax 设置的一部分并将它们放入每个请求中,从而有效地使我的应用程序无状态。这种架构的另一个好处是负载均衡器友好,因为现在我们的任何服务器都可以处理请求。 Gregg,我是 *** 的新手,如果您可以发表您的评论作为答案,我会接受。 【参考方案1】:

会话范围的目的是在会话结束时将其擦除。如果您需要在会话之间共享数据,您应该重新考虑您的架构并将数据保存在数据库(服务器端)或 cookie(客户端)中

(从 cmets 转为答案)

【讨论】:

以上是关于Grails Spring Security - 会话超时后重新登录时重新加载会话变量的主要内容,如果未能解决你的问题,请参考以下文章

grails-spring-security-rest 插件和悲观锁定

Grails + spring-security-core:用户登录后如何分配角色?

Grails Spring Security注释问题

Grails spring-security-oauth-google:如何设置

Grails Spring Security 插件网址

Grails/Spring Security:无法使用新创建的用户登录