我有一个捕获 22。
我正在实现一个服务客户端,其职责是在 LDAP 服务器上对用户进行身份验证。客户端接受用户 ID 和密码,确定 userDn,并调用对 LDAP 服务器的请求。
我的问题是目前设置 spring ldap 模板的方式。LdapTemplate
需要一个ContextSource
at bean 创建时间。在创建时将其ContextSource
配置为某个值(ldapurl、userdn、密码)。但我意识到我的ContextSource
意志会随着每个用户而改变。每个用户都会根据用户的 DN 打开一个连接。因此,我的上下文源因每个用户而异,因此ContextSource
在创建 bean 时(容器启动)创建一个不是正确的位置。而且,无法通过AFAIK覆盖ContextSource
(使用用户名/密码) 。LdapTemplate
那么,在我的代码中显式创建一个 Ldap 对象是否是个好主意,方法是ContextSource
使用实际的用户 ID 和密码(并且其 url 是所有用户的常量)显式初始化它并LdapTemplate
使用 setter 方法更新我的 bean LdapTemplate
?在我的客户调用之后,我将ContextSource
通过将其设置为来处理null
(模板比操作更有效,因为它是一个存在于 spring 容器中的 bean。所以它可以被重用,因此之前关于上下文的信息一定不可用。)
问题: 如上所述,这个问题还有其他解决方案吗?