2009-12-31 3 views
3

Я создаю приложение, для которого я пытаюсь использовать LDAP с authlogic для аутентификации входа. Я хочу принять только имя пользователя и зарегистрировать пользователя, если он находится на сервере LDAP. Для этого мне нужно отключить проверку пароля. Как я могу это сделать?Как сделать пароль необязательным при использовании аутентификации authlogic и LDAP?

ответ

0

Я успешно делал это с Open ID (та же идея, пароль не хранится мое приложение), не имея столбец пароля в users таблицы и с помощью этой конфигурации для Authlogic:

class User < ActiveRecord::Base 
    acts_as_authentic do |c| 
    c.crypted_password_field = false 
    end 
end 

Без установки crypted_password_field , во время пользовательских сейвов возникали ошибки.

+0

Я попробовал, но это не сработало для меня. До этого я использовал authlogic-openid gem, чтобы создать логин, который не требует пароля. Я ссылался на этот скринкаст: http://railscasts.com/episodes/160-authlogic – chetu

+0

Что не сработало? Были ли возникли ошибки? –

+0

Он по-прежнему говорит: «Пароль не может быть пустым», хотя я не предоставлял поле пароля в пользовательском интерфейсе. – chetu

1

В модели пользователя, где вы называете acts_as_authentic, это мощь сделать трюк:

acts_as_authentic do |config| 
    config.require_password_confirmation = false 
    config.ignore_blank_passwords = true 
end 

Эти параметры конфигурации, в частности, можно найти в Lib/authlogic/acts_as_authentic/password.rb (в версия 2.1.3).

+0

Я тоже пробовал, но не работал. Я просмотрел исходный код для authlogic, и похоже, что для модели UserSession все еще нужен пароль, когда он пытается ее сохранить. – chetu

2

Я думаю, что вы можете сделать это следующим образом:

class User < ActiveRecord::Base 
    acts_as_authentic do |config| 
    config.validate_password_field = false 
    end 
end 
1

Я была такая же проблема с authlogic_ldap аддоном, который я модифицированным для моего приложения. Я делаю ошибку, включая login_field :ldap_login в классе User. У меня также была ошибка stack level too deep, но я вернул authlogic с v3.0.3 до v3.0.2, и теперь он работает.

Смежные вопросы