gpt4 book ai didi

java - Spring LDAP 3.1 自定义用户映射器

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:51 24 4
gpt4 key购买 nike

我正在使用 Spring Security 和 Spring LDAP 开发一个应用程序。这是我的 spring-security.xml 的一部分:

<authentication-manager alias="authenticationManager">
<ldap-authentication-provider
user-search-filter="sAMAccountName={0}"
user-search-base="OU=UK,OU=Domain Objects,dc=test,dc=test1"
group-search-filter="member={0}"
group-search-base="OU=_Groups,OU=UK,OU=Domain Objects,dc=test,dc=test1"
group-role-attribute="cn"
role-prefix="ROLE_">
</ldap-authentication-provider>
</authentication-manager>

<ldap-server url="ldap://host:389/"
manager-dn="managerUser"
manager-password="ManagerPassword" />

现在我需要对用户属性执行一些逻辑。我想知道是否有办法在登录阶段获取该属性,或者每次需要该属性时都需要在 LDAP 上进行搜索。

现在在网上看我有点困惑,因为我在网上发现了很多获取自定义属性的方法:扩展 DAO 中的 ContextMapper 或 AbstractContextMapper 或扩展 LdapUserDetailsMapper。

你能帮我找到正确的解决方案吗?我认为最好的方法是拥有一个对象,我可以在登录阶段放置我需要的属性,而不是每次需要该属性时都查询 LDAP。谢谢

最佳答案

我不太清楚你到底想问什么。我可以告诉您的是,一旦您通过 LDAP 进行身份验证,Spring Security 就会缓存用户详细信息,因此您无需在每个后续请求中都调用 LDAP。

这意味着用户登录后调用的任何后续方法都可以获取用户详细信息,如下所示:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
UserDetails ldapUser = (UserDetails) authentication.getPrincipal();

或者,如果您愿意,只要您实现 UserDetails,就可以将其转换为您创建的自定义类。

public class MyUser implements UserDetails {
.....
}

这有帮助吗?

关于java - Spring LDAP 3.1 自定义用户映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473668/

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