Ошибка кодирования при использовании аутентификации Devise ldap - PullRequest
5 голосов
/ 21 февраля 2012

Я искал в Интернете ответ на этот вопрос, но у меня нет идей. Я использую Devise с Rails 3 для аутентификации с помощью LDAP. Я использую Rails 3 с Ruby 1.9.2. Я использую mysql2 в качестве коннектора базы данных.

Я могу заставить это работать с консолью rails, так что я знаю свои адреса и все правильно.

У нас есть активный каталог, и для аутентификации мы должны поставить префикс имени для входа в систему. Так что мой логин будет систем \ крудбашер.

Это работает в консоли, но когда у меня есть форма с логином и паролем, я получаю эту ошибку.

Кодировка :: CompatibilityError в Devise :: SessionsController # create несовместимые кодировки: ASCII-8BIT и UTF-8

Хорошо, я понял, что у него проблема с обратной косой чертой. Чего я не понимаю, так это как это исправить.

Полная трассировка стека, если это поможет, такова:

net-ldap (0.2.2) lib/net/ber/core_ext/array.rb:62:in `to_ber_seq_internal'
net-ldap (0.2.2) lib/net/ber/core_ext/array.rb:54:in `to_ber_contextspecific'
net-ldap (0.2.2) lib/net/ldap/filter.rb:509:in `to_ber'
net-ldap (0.2.2) lib/net/ldap.rb:1380:in `block in search'
net-ldap (0.2.2) lib/net/ldap.rb:1361:in `loop'
net-ldap (0.2.2) lib/net/ldap.rb:1361:in `search'
net-ldap (0.2.2) lib/net/ldap.rb:635:in `search'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:208:in `search_for_login'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:86:in `dn'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:124:in `authorized?'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:14:in `valid_credentials?'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/model.rb:39:in `valid_ldap_authentication?'
activesupport (3.1.1) lib/active_support/core_ext/object/try.rb:32:in `try'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/model.rb:85:in `authenticate_with_ldap'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/strategy.rb:12:in `authenticate!'

Я действительно в тупике. Спасибо всем, кто может помочь !!

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Кодировка - это всегда беспорядок.Вы пытались играть с encode и force_encoding?

0 голосов
/ 28 марта 2012

У меня была та же проблема, и я исправил ее, обновив библиотеку net-ldap до 0.3.1, но это сломало мою get_ldap_email (что похоже на devise_ldap_authenticatable пример главной страницы, запрос LDAP)

Кроме того, все было в порядке, но я не уверен на 100%, если ничего не сломано.

Редактировать: По-видимому, мне также необходимо обновить devise_ldap_authenticatable до версии 0.4.7 или выше -> Ruby on Rails 3: Devise :: LdapAdapter.get_ldap_param undefined error error

Но я не уверен, как обновить оба, devise_ldap и net-ldap, и не сломать обновление моего пакета

...