Ruby on rails Desive ldap Authenticatable无法正确查找

Ruby on rails Desive ldap Authenticatable无法正确查找,ruby-on-rails,devise,ldap,Ruby On Rails,Devise,Ldap,我正在尝试从rails上的ldap+Desive_ldap_authenticatable获取用户属性 (设计ldap认证表0.8.1,rails 3.2.14) 吹是我的配置 设计 config.ldap_logger = true config.ldap_create_user = true config.ldap_config = "#{Rails.root}/config/ldap.yml" ldap.yml(./config/ldap.yml) user.rb devise :lda

我正在尝试从rails上的ldap+Desive_ldap_authenticatable获取用户属性 (设计ldap认证表0.8.1,rails 3.2.14)

吹是我的配置

设计

config.ldap_logger = true
config.ldap_create_user = true
config.ldap_config = "#{Rails.root}/config/ldap.yml"
ldap.yml(./config/ldap.yml)

user.rb

devise :ldap_authenticatable, :registerable, revoerable, 
       :rememberable, :trackable, :validatable
before_save :get_ldap_email

def get_ldap_email
   self.email = Devise::LDAP::Adapter.get_ldap_param(self.username, "mail")
end
我的LDAP(AD)状态为

CN=12345678,OU=Employee,OU=Person,DC=TEST,DC=AD is exist
and it has mail attribute => "12345678@test.com"
登录过程很好 但它没有得到任何属性

日志是

User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`username` = '12345678'    ORDER BY created_at DESC LIMIT 1
LDAP: LDAP dn lookup: CN=12345678
LDAP: LDAP search for login: CN=12345678
LDAP: LDAP search yielded 0 matches
LDAP: Authorizing user 12345678@test.ad
LDAP: LDAP dn lookup: CN=12345678
LDAP: LDAP search for login: CN=12345678
LDAP: LDAP search yielded 0 matches

也许查找地址错了。。。 (可能CN=12345678,OU=Employee,OU=Person,DC=TEST,DC=AD是正确的)

我怎样才能修好它? 如何获取用户属性?(例如:邮件…

试试这个:

 def get_ldap_email
  self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail").first
 end

before_save :get_ldap_email
管理员\用户:正确的根dn

管理员密码:您更正密码了吗

在designe.rb中

config.ldap\u使用\u admin\u to\u bind=true

尝试以下操作:

 def get_ldap_email
  self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail").first
 end

before_save :get_ldap_email
管理员\用户:正确的根dn

管理员密码:您更正密码了吗

在designe.rb中


config.ldap_use_admin_to_bind=true

{[2]pry(#)>designe::LdapAdapter name错误:未初始化常量designe::LdapAdapter from(pry):2:get_ldap_email中的'get_ldap_email'我想designe::LdapAdapter在0.8.1上不推荐使用?在_save:get_ldap(email)之前我错过了打字错误,在(saveself.email=designe::ldap)Adapter.Adapter.get)参数(self.username,“mail”).first Array(mail).first-first-in-Array return-mail[33]pry(#)>designe::LDAP::Adapter.get_LDAP_param(self.username,“mail”).first NoMethodError:nil的未定义方法'first':NilClass{[2]pry(#)>designe::LdapAdapter name错误:未初始化常量designe::LdapAdapter from(pry):2:在“get_ldap_email”中,我认为Deave::LdaAdapter在0.8.1上不受欢迎?在保存之前:get_ldap_email我错过了拼写错误,它在保存之前。email=Deave::ldap::Adapter.get_ldap_param(self.username,“mail”)。第一个数组(mail)。第一个数组中的第一个返回邮件[33]pry(#)>Deave::ldap::Adapter.get_ldap_param(self.username,“mail”).first NoMethodError:nil:NilClass的未定义方法“first”
 def get_ldap_email
  self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail").first
 end

before_save :get_ldap_email