Проверка подлинности Devise (1.0.7) не выполняется в rails 2.3.5 - PullRequest
0 голосов
/ 16 января 2020

Пытался использовать Devise 1.0.6 в Rails 2.3.5 проекте (я знаю, что это немного старая версия). Я использовал инструкции здесь для настройки устройства. Регистрация работает нормально, но при входе поле пароля очищается и ничего не происходит. В журнале не отображается ошибка. admin_signed_in? дает не вошедший в систему.

при входе контроллер создает действие следующим образом:

  def create
    if resource = authenticate(resource_name)
      set_flash_message :notice, :signed_in
      sign_in_and_redirect(resource_name, resource, true)
    elsif [:custom, :redirect].include?(warden.result)
      throw :warden, :scope => resource_name
    else
      set_now_flash_message :alert, (warden.message || :invalid)
      clean_up_passwords(build_resource)
      render_with_scope :new
    end
  end

authenticate () метод в модели, как показано

        def authenticate(attributes={})
          return unless authentication_keys.all? { |k| attributes[k].present? }
          conditions = attributes.slice(*authentication_keys)
          resource = find_for_authentication(conditions)
          resource if resource.try(:valid_for_authentication?, attributes)
        end

проверено resource в модели и возвращает верную запись. но это не доходит до контроллера. в контроллере authenticate(resource_name) возвращает nil

helper.rb

      def authenticate(scope)
        warden.authenticate(:scope => scope)
      end

Область действия действительна, а warden.authenticate(:scope => scope) возвращает значение NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...