这是一个我正在努力解决的类/流设计问题:
我试图使用户的会话信息在整个应用程序(我的Grails应用程序)中可用,而无需(或需要)在服务层和控制器之间传递HttpSession。
目前,我有一个过滤器,一旦用户登录,所有与用户相关的信息都映射到UserSessionHelper类中,并且我将该类的实例添加到会话中,如:
session.userInfo = new UserSessionHelper(name:"x", isActive: true)
我希望能够访问会话对象及其内容在我的应用程序中的任何地方,而不需要显式地传递它(作为参数),就像grailsApplication在整个Grails中可用一样。
有人能给我一些提示如何完成这一点,在线程安全的方式?
我使用的是Grails 2.4.2
谢谢。
有很多方法可以做到你所要求的事情,但了解细节会有所帮助。例如,您可能需要一个会话作用域bean来保存所讨论的状态,然后在需要时访问该bean。然后你就可以把这个bean注入到任何控制器、服务、标签库、其他bean等任何你需要访问那个状态的地方。