gpt4 book ai didi

java - 如何使用 ldaptemplate 删除操作属性

转载 作者:行者123 更新时间:2023-12-01 13:16:23 30 4
gpt4 key购买 nike

我需要从名为 pwdAccountLockedTime 的策略覆盖中删除操作属性

我关注了this Q&A建议方式2:

使用LdapTemplate#modifyAttributes(Name, ModificationItem[])直接手动构建ModificationItem大批。

这是我的代码:

Name dn = buildDn(user);
DirContextOperations context = ldapTemplate.lookupContext(dn);
ModificationItem[] modificationItems;
modificationItems = new ModificationItem[1];
modificationItems[0] = new ModificationItem(DirContextAdapter.REMOVE_ATTRIBUTE,
new BasicAttribute(
"pwdAccountLockedTime", dn));
ldapTemplate.modifyAttributes(dn,modificationItems);

我检查了用户,该属性仍然存在。

我错过了什么?

最佳答案

如果要删除 pwdAccountLockedTime 属性,则必须在配置 LDAP 时指定管理员凭据。用户无权删除操作属性。您可以引用以下代码。

       Name dn = buildDn(pvo);

DirContextOperations context = ldapTemplate.lookupContext(dn);
ModificationItem[] modificationItems;
modificationItems = new ModificationItem[1];


modificationItems[0] =new ModificationItem(DirContext.REMOVE_ATTRIBUTE, new BasicAttribute("pwdAccountLockedTime"));

ldapTemplate.modifyAttributes(dn,modificationItems);

注意: buildDn() 是一个单独的方法。
  protected Name buildDn(PersonVo p) {
return LdapNameBuilder.newInstance(BASE_DN)
.add("","") // add your root
.add("", "") // add your root
.add("cn", p.getFullname())
.build();
}

我从 postman 那里得到这个 PersonVo 对象,基于我正在构建 Dn。

这是配置代码

@配置
公共(public)类配置{
@Bean
public LdapContextSource ldapContextSource()
{
LdapContextSource lcs= new LdapContextSource();
lcs.setUrl("Your url");
lcs.setUserDn("yourDn");
lcs.setPassword("yourpassword");
return lcs;
}

}

如果您不指定管理员凭据,则此代码不起作用

关于java - 如何使用 ldaptemplate 删除操作属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20946063/

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