我有一个非常常见的使用Hibernate的Spring Web MVC应用程序。应用程序的用户存储在名为USER的表中,还存储用户名,密码和其他几个属性。此外,我正在使用Spring安全性和jdbc-user-service来保护应用程序,以便只有该表中的用户才能访问其用户名/密码。 现在我的问题是,一旦登录,我需要经常访问这个用户对象,例如为了获得该用户的所有订单,该用户的地址等。我知道如何访问Principal对象,它与我的用户对象共享用户名,但我想知道哪个是最容易访问我的自定义User对象的策略。有几种策略,比如把它放在会话中,编写一个findUserByUsername()方法并在需要时调用它(这会导致我想到很多数据库)但我正在寻找一种更聪明的方法。是否有可能注入User对象?或者我应该把它放在会话中?如果是这样,那么实现这一目标的最佳方法是什么?我怎么能在Spring框架登录事件后挂钩? 有什么建议? 谢谢 保罗
答案 0 :(得分:0)
您始终可以将UserDetails bean范围限定为会话(link)。当然,这将是一个有状态的bean,因此只要会话处于活动状态,您就可以自由地存储有关您的用户实体的任何信息并访问它。一次访问数据库。
注意:用户对象(以及任何相关对象)将与Hibernate会话分离。在将值存储在bean中或在以后的处理中访问它时,请记住这一点。