在 Rails 4 中从 Net/LDAP 迁移到 Devise/LDAP 需要帮助

Need help moving from Net/LDAP to Devise/LDAP in Rails 4

我有一个 Rails 3 应用程序使用 net-ldap, which I'm upgrading to Rails 4 using devise_ldap_authenticatable

以前,我有一个助手 class 可以使用域对用户进行身份验证。这是在没有任何管理员权限的情况下完成的。这是片段:

class LDAPHelper

  def authenticate(host, port, domain)
    @ldap      = Net::LDAP.new
    @ldap.host = host
    @ldap.port = port
    @ldap.auth "#{domain}\#{@login}", @password
    @authenticated = @ldap.bind
  end

end

上面的代码片段在我的 Rails 3 应用程序中运行良好。现在,在新的 Rails 4 应用程序中,使用 devise 找不到用户,然后收到未通过身份验证的错误:

LDAP: LDAP dn lookup: cn=myuser
LDAP: LDAP search for login: cn=myuser
LDAP: LDAP search yielded 0 matches
LDAP: Authorizing user cn=myuser,etc...
LDAP: Not authorized because not authenticated.

我试过将属性从 cn 切换到 sAMAccountName,但是,这似乎没有任何效果。

我想知道这是否与我需要像以前一样以某种方式传递 domain 的事实有关?

我终于明白了。我将此添加到 config/initializers/devise.rb:

config.ldap_auth_username_builder = Proc.new() {|attribute, login, ldap| "MYDOMAIN\#{login}"}