2014-08-28 4 views
0

Немного назад я следил за набором инструкций о том, как реализовать имена пользователей, с которыми можно войти в Devise. После выполнения кода из инструкций я заметил, что я больше не могу войти. Зарегистрируйтесь, да, но нет. Попытка входа в систему только с помощью флэш-уведомления о некорректном входе/паролеDevise отказывается предоставить мне доступ к

Действительный_user? метод возвращает true, поэтому не проблема в том, что я неуклюжлив, вспоминая мой пароль. Я нашел связанную проблему, обсуждаемую здесь https://groups.google.com/forum/#!topic/plataformatec-devise/4RHM10yJFOw, но ничто из упомянутого здесь не решило мою проблему. Наконец, я переопределяю метод создания Devise :: SessionsController, чтобы увидеть шаг за шагом, что происходит. Я заметил, что было что-то напуганный о первой строке этого:

self.resource = warden.authenticate!(auth_options) 

, который выводит ...

!! #<ArgumentError: uncaught throw :warden> 

Кто-нибудь есть какие-либо идеи относительно того, что может происходить здесь.

Инструкция: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

+0

Как выглядит ваш код? – sevenseacat

+0

Может показаться сумасшедшим, но вы уверены, что еще не вошли? – Joel

ответ

0

Таким образом, после некоторых поисков я обнаружил, что моя проблема, вытекающая из некоторого кода в моем ApplicationController, который необходим в Rails 4 из-за сильный Params.

devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:first_name, :last_name, :login, :username, :email, :password, :remember_me) } 

Я первоначально включали: имя пользователя и адрес: Электронный адрес в список разрешенных атрибутов, а не поле логина (виртуальный атр, который может быть имя пользователя/адрес электронной почты), который был, что был включен в форму. Итак, глупая ошибка с отягчающим усложнением для поиска решения.

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