我正在使用自己的 UserDetailsService 接口(interface)实现从数据库加载 User 对象并将其作为 UserDetail 放入我的 SecurityContext 中。 User 对象是一个分离的 Hibernate 对象。
当我想要访问经过身份验证的用户的延迟加载关系时,我需要从 SecurityContext 获取它,并通过加载其 ID 或合并将其再次附加到 Hibernate session 。
在 Spring MVC 或 Spring WS 应用程序中,您通常在哪里执行此操作?在 Controller 中,这意味着我必须将 UserDAO 注入(inject)其中,还是将 ID 传递到服务层以在那里加载它?
最佳答案
这些都不属于 Controller 。把它放在Service层。
Controller 实际上是 View 的一部分。如果您更改 View 技术,则不应改变服务的正常运行。把它放在那里并将服务注入(inject)到 Controller 中。
出于同样的原因,DAO 不属于 Controller 。
关于java - Spring Security 用户详细信息最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1079077/