使用户/会话信息在 Grails 中的应用程序中可用

Posted

技术标签:

【中文标题】使用户/会话信息在 Grails 中的应用程序中可用【英文标题】:Make user/session info available across the application in Grails 【发布时间】:2015-10-07 13:46:47 【问题描述】:

这是我试图解决的一个类/流程设计问题:

我试图让用户的会话信息在我的 Grails 应用程序中可用,而不必(或要求)在服务层和控制器之间传递 HttpSession。

目前,我有一个过滤器,一旦用户登录,所有与用户相关的信息都会映射到 UserSessionHelper 类中,然后我将该类的实例添加到会话中,例如:

 session.userInfo = new UserSessionHelper(name:"x", isActive: true)

我希望能够访问 session 对象 及其在我的应用程序中各处的内容,而无需显式传递它(作为参数),就像 grailsApplication在整个 Grails 中都可用。

有人可以给我一些关于如何以线程安全的方式完成此任务的提示吗?

我正在使用 Grails 2.4.2

谢谢。

【问题讨论】:

【参考方案1】:

有很多方法可以做您所询问的事情,但了解具体细节会有所帮助。例如,您可能想要一个会话范围的 bean,它保存有问题的状态,然后在您需要的任何地方访问该 bean。然后,您可以将该 bean 注入到任何您需要访问该状态的任何控制器、服务、标记库、其他 bean 等中。

【讨论】:

以上是关于使用户/会话信息在 Grails 中的应用程序中可用的主要内容,如果未能解决你的问题,请参考以下文章

无法将数据库状态与 Grails Hibernate 中的会话错误同步

如何在 grails 中使用会话

在tomcat上的grails spring security中登录用户的会话

在 grails 中维护会话

具有并发会话的 grails 3

Grails:乐观锁定,StaleObjectStateException 与 Spring Security 会话中的域,更新计数器