0.4.9升级后的devise_ldap_authenticatable Net :: BER :: BerError异常

时间:2011-07-11 11:27:05

标签: ruby-on-rails ldap devise

我已将devise_ldap_authenticatable gem从0.4.6升级到最新版本(0.4.9)我以前工作的LDAP身份验证现在在尝试进行身份验证时抛出以下异常:

  

Devise中的Net :: BER :: BerError :: SessionsController #create

     

不支持的对象类型:id = 139

终端输出以下内容:

  

在2011-07-11 11:58:45为127.0.0.1开始发布“/ d / users / sign_in”   +0100由Devise处理:: SessionsController #create as HTML参数:{“utf8”=>“✓”,   “authenticity_token”=> “中T + TTL / 6YPK1A / HE4XRukI7SKHDTVr553 / HOD + 5UyYUk =”,   “user”=> {“username”=>“admin”,“password”=>“[已过滤]”,   “remember_me”=>“0”},“commit”=>“登录”} SQL(0.4ms)SELECT名称   FROM sqlite_master WHERE type ='table'AND NOT name =   'sqlite_sequence'

     

用户加载(1.3ms)SELECT“users”。* FROM“users”WHERE   “users”。“username”=“admin”LIMIT 1 LDAP:LDAP搜索:uid = admin   在659ms内完成500内部服务器错误

     

Net :: BER :: BerError(不支持的对象类型:id = 139):

如果我将宝石降级回旧版本,那么它将全部恢复生机(严格来说,我必须在devise.rb中注释掉“config.sign_out_via =:delete”)

FWIW我正在使用以下宝石/版本:

  • 使用rails(3.0.9)
  • 使用设计(1.4.2)
  • 使用net-ldap(0.2.2)
  • 使用devise_ldap_authenticatable(0.4.9)

如果有人知道发生了什么或者可以建议我可以看一下调试这个,我将不胜感激!

3 个答案:

答案 0 :(得分:1)

经过多次挖掘后,我将问题追溯到net-ldap库0.2.2版。 我已经分叉devise_ldap_authenticatable来创建一个版本,其中包含以前版本的net-ldap(0.1.1)作为依赖项。

如果真的想要你可以使用我的叉子,但我不会维护它 - 这只是一个临时措施,直到:

a)net-ldap库是固定的

b)我有时间深入研究这个问题并提出更好的解决方案

我的分叉位于:https://github.com/ashleytowers/devise_ldap_authenticatable

答案 1 :(得分:1)

为什么不使用旧的net-ldap?

gem install -V net-ldap -v 0.1.1

我使用net-ldap版本0.1.1,它适用于ruby 1.9

答案 2 :(得分:0)

My fork使用net-ldap版本0.2.2(但使用fix

我将它作为宝石发布。您可以在Gemfile中使用它

gem "prathe_devise_ldap_authenticatable", :require => 'devise_ldap_authenticatable'