我有一个使用 Hibernate 的非常常见的 Spring Web MVC 应用程序。应用程序的用户存储在一个名为 USER 的表中,还存储了用户名、密码和一些其他属性。此外,我正在使用带有 jdbc-user-service 的 Spring 安全性来保护应用程序,以便只有该表中的用户才能使用他们的用户名/密码进行访问。现在我的问题是,一旦登录,我需要经常访问这个用户对象,例如为了得到这个用户的所有订单,这个用户的地址等等。我知道如何访问与我的用户对象共享用户名的 Principal 对象,但我想知道哪个是轻松访问我的自定义用户对象的最佳策略。有几个策略,比如把它放在会话中,编写一个 findUserByUsername() 方法并在需要时调用它(我认为这会导致大量访问数据库)但我正在寻找一种更智能的方法。是否有可能注入用户对象?还是我应该把它放在会话中?如果是这样,实现这一目标的最佳方法是什么?在 Spring 框架登录事件之后我怎么能挂上?有什么建议么?谢谢保罗
问问题
129 次
1 回答
0
您始终可以将 UserDetails bean 限定为会话(链接)。当然,这将是一个有状态的 bean,因此只要会话处于活动状态,您就可以自由地存储有关您的用户实体的任何信息并访问它。一趟数据库。
注意:用户对象(和任何相关对象)将从Hibernate Session中分离出来。在将值“存储”在 bean 中或在以后的处理中访问它们时,请记住这一点。
于 2013-04-23T14:25:25.077 回答