Как сделать пароль необязательным при использовании аутентификации authlogic и LDAP?

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


person chetu    schedule 31.12.2009    source источник


Ответы (4)


Я думаю, вы можете сделать это так:

class User < ActiveRecord::Base
  acts_as_authentic do |config|
    config.validate_password_field = false
  end
end
person pupeno    schedule 03.04.2010

В вашей модели User, где вы вызываете act_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).

person Eliot Sykes    schedule 26.01.2010
comment
Я тоже так пробовал, но не получилось. Я просмотрел исходный код для authlogic, и похоже, что модели UserSession все еще нужен пароль, когда она пытается его сохранить. - person chetu; 01.02.2010

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

person Jon Bramble    schedule 26.07.2011

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

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

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

person Sean Carpenter    schedule 03.01.2010
comment
Я попробовал это, но это не сработало для меня. До этого я использовал гем authlogic-openid для создания логина, который не требует пароля. Я ссылался на этот скринкаст: railscasts.com/episodes/160-authlogic - person chetu; 05.01.2010
comment
Он по-прежнему говорит, что пароль не может быть пустым, хотя я не указал поле пароля в пользовательском интерфейсе. - person chetu; 06.01.2010
comment
Вам нужно убедиться, что в таблице users (или любой другой таблице, лежащей в основе вашей модели acts_as_authentic) нет поля пароля. Это то, что генерирует атрибут пароля в модели. - person Sean Carpenter; 06.01.2010
comment
Моя пользовательская модель не имеет поля пароля, но все равно выдает то же сообщение об ошибке. Я чувствую, что в authlogic gem требуется пароль. - person chetu; 15.01.2010