gpt4 book ai didi

java - Spring Security、Spring LDAP、Hibernate如何处理用户信息?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:06 26 4
gpt4 key购买 nike

我有一个基于 Spring MVC 构建的应用程序,它使用 Hibernate 来满足所有的数据库交互需求。现在需要更新应用程序以使用我们的 LDAP 基础架构来驱动用户信息,包括基本用户数据,例如姓名和电子邮件,以及身份验证和授权需求。

由于到目前为止一切都在一个地方(数据库),因此报告都相当简单,因为 Hibernate 在开始所需查询时根据需要管理信息检索。获取用户名等非常简单,因为 Hibernate 会延迟加载数据。

由于希望使用 LDAP 驱动用户信息,Hibernate 将不再能够即时填充用户信息,因为它不会管理用户数据。当我们需要抓取姓名等用户数据时,我们应该如何使用 LDAP 来驱动用户数据并处理身份验证/授权而不造成太多痛苦?

我们考虑过使用一种混合方法,其中将 LDAP 视为数据的“来源”,而当前系统保持原样。这将需要更改事务处理代码以针对 LDAP 进行更新,以便实时事务使用最新信息,并且还需要针对 LDAP 进行定期同步以使应用程序数据库保持最新以用于报告目的。

这个解决方案似乎有点老套,而且似乎有很多 Activity 部件,但我在网络上的其他地方找不到太多关于这个主题的信息。

应如何处理用户信息/应如何构建应用程序,以便仍然可以轻松访问所有用户信息,并且可以轻松地将其绑定(bind)到系统的其余部分以进行报告?有没有办法集成 Spring LDAP 和 Hibernate,这样数据层之上的层就不必知道了?还是将信息从 LDAP 提取到现有数据库中是最简单的方法?

最佳答案

如果您根本不能删除用户表,因为它被其他实体使用,那么我的建议是将安全内容与业务内容分开。

这意味着从用户表中删除仅出于安全需要的信息(登录名、密码等),以便仅保留实现业务案例所需的内容。

然后重写安全性内容,使其基于 LDAP。我猜你找到了一种方法来获取给定主体的用户数据库对象。

只剩下一件事,如果新人获得新登录,如何创建新的用户数据库实体。您有 3 个选择,最好的一个在很大程度上取决于您的应用:

  • 如果用户第一次登录则创建数据库实体
  • 如果您首先需要它,请创建数据库实体
  • 在 LDAO(或稍后的一些 minites)中创建数据库实体时创建它,例如使用 cron 作业或某些 Spring Scheduling 服务。

关于java - Spring Security、Spring LDAP、Hibernate如何处理用户信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com