1

我有一个用户:

'cn=example_user, ou=Person, dc=example, dc=com'

使用 ActiveLdap,我想将容器更改为:

'cn=example_user, ou=Inactive, dc=example, dc=com'

我遗漏了一些东西......我已经搜索并查看了源代码,并且这种可能性似乎存在,但我没有看到它是如何完成的。谢谢!

4

2 回答 2

1

为此,请使用 MODIFY DN 操作。也可以看看:

于 2013-09-04T10:54:15.303 回答
0

终于想通了。这是我所做的:

  1. 运行后setup_connection

    ActiveLdap::Base.setup_connection(host: host, port: port, etc.) 
    
  2. 调用modify_rdn方法connection

    ActiveLdap::Base.connection.modify_rdn(dn, new_rdn, remove_old_rdn, new_superior, options={})
    

我在change_ou(new_ou)模型上创建了一个实例方法ldap_mapping,所以我通过了:

  • dn为了dn
  • "cn=#{cn}"为了new_rdn
  • true为了remove_old_rdn
  • "ou=#{new_ou},dc=example,dc=com"为了new_superior

该变量new_ou当然是新容器的名称(在我上面的示例中为“非活动”)。我没有为选项传递任何东西,因为它默认为任何空哈希。

下面是该modify_rdn方法源代码的链接。我很难弄清楚它需要从以下位置调用ActiveLdap::Base.connection

https://github.com/activeldap/activeldap/blob/master/lib/active_ldap/adapter/base.rb#L236

于 2013-09-04T21:52:17.393 回答