内存中的用户管理

如果期望用户完全在 LDAP 中管理,设置下列应用程序属性:

jmix.ldap.user-details-source = ldap

此时,Spring Security 会在每次认证成功后创建标准的 LdapUserDetails 对象,并将对象保留在内存中,而不是从数据库读取 User 实体。用户的授权通过角色映射流程获取,在 获取用户授权 部分介绍。

如需在应用程序中管理 LDAP 用户,请参阅 开始使用 章节。

LDAP 用户 Repository

当用户主要由 LDAP 管理时,应用程序中也需要具有可以选择用户或在 SuggestionField 中查找用户的功能。为此,该扩展组件提供了 UserRepository 的 LDAP 实现。这个 Repository 支持从 LDAP 访问用户,但是不提供 systemanonymous 用户。另外,你也许还希望数据存储的用户也能支持查找。

为了完成这个功能,可以声明一个 CompositeUserRepository bean,组合所有的 UserRepository 实例,例如,LdapUserRepositoryDatabaseUserRepository

然后从 DatabaseUserRepository 上删除 @Primary 注解,避免与组合 Repository 冲突。然后将该组合 Repository 声明为 Primary:

@Bean
@Primary
UserRepository userRepository() {
    return new CompositeUserRepository();
}