RoR devise: sign_in всегда возвращает неверный адрес электронной почты/пароль
Каждый раз, когда я вхожу в систему, я получаю сообщение об ошибке, что адрес электронной почты/пароль недействителен.
маршруты:
devise_for :users
devise_scope :users do
get '/users/sign_out' => 'devise/sessions#destroy', :as => :destroy_user_session
post '/users/sign_in' => 'devise/sessions#create', :as => :user_session
end
resources :users
модель пользователя:
devise :database_authenticatable, :confirmable, :recoverable, :rememberable, :trackable
attr_accessor :password
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :gender, :remember_me
Вид:
<% if signed_in?(:user) %>
Hi <%= current_user.first_name %>. | Not you? <%= link_to 'Sign out', destroy_user_session_path, :method => :delete %>
<% else %>
<%= link_to 'Sign up', signup_path %> or <%= link_to 'Sign in', user_session_path, :method => :create %>
<% end %>
Я попытался изменить маршруты:
get '/users/sign_in' => 'devise/sessions#new', :as => :new_user_session
и изменения соответствующих путей, но это ничего не изменило.
Я даже изменил код в представлении:
if signed_in?(:user)
в
if user_signed_in?
и сделал комбинацию этих вещей, и ничего не работает.
Я также попросил разработчика обработать подтверждение, которое я сделал, скопировав сгенерированную ссылку на браузер, и в первый раз меня подписывает как пользователь. Он также позволяет мне сменить пароль по ссылке подтверждения по электронной почте, которая также меня подписывает при смене пароля. Но как только я выхожу и запишусь, он сообщает мне, что адрес электронной почты снова недействителен.
Может ли кто-нибудь помочь?
Я использую рельсы 3.0.7, разрабатываю 1.4.5, capybara 1.1.1, огурец 1.0.6, mysql2 0.2.6 и грабли 0.8.7, если это кому-то помогает.
Спасибо
EDIT:
Чтобы помочь будущим пользователям, на самом деле нет ничего плохого в этом камне. Он работает нормально. Проблема связана с моей базой данных. По какой-то причине он выбирает NULL-адрес электронной почты из базы данных вместо того, чтобы вытаскивать информацию пользователя, с которым я пытаюсь войти. Я выясню, как исправить это сейчас, и обновляю его, как только я это выясню.
Ответы
Ответ 1
У меня была аналогичная проблема при новой установке Devise, но я обнаружил, что если я запустил bundle update
, то перезапустил мой dev-сервер, он будет работать.
Сначала я не видел запрос БД в development.log
, но как только я обновил свой Gemfile
(чтобы убедиться, что я использую последний камень Devise) и перезапустил сервер, теперь я вижу запросы db в мой файл журнала и работает (магически).
Надеюсь, что это поможет.
Btw, не уверен, что это поможет вам... но это маршруты в моем Routes.rb
devise_for :users, :path_names => { :sign_up => "register",
:sign_in => "login",
:sign_out => "logout",
:settings => "settings" }
devise_scope :user do
get "login", :to => "devise/sessions#new"
get "register", :to => "devise/registrations#new"
get "settings", :to => "devise/registrations#edit"
get "logout", :to => "devise/sessions#destroy"
end
Ответ 2
Я столкнулся с этой проблемой, когда у меня были оба
config.authentication_keys = [ :username ]
и
config.authentication_keys = [ :email ]
включается одновременно в config/initializers/devise.rb.
После удаления настройки дубликата проверка подлинности прошла успешно.
Ответ 3
Когда я столкнулся с этой проблемой, я вернулся через конфигурационный файл Devise в
конфигурации/Инициализаторы/devise.rb
Затем я нашел часть, которую я помню, я изменил ее на: username
config.authentication_keys = [ :username ]
Я изменил это на :email
. Это в конечном итоге заставило его работать.
Ответ 4
Я думаю, что attr_accessor работает с attr_accessible. Вам действительно нужно иметь attr_accessor?, если не просто удалить его.
Попробуйте и сообщите мне, как это происходит.
С наилучшими пожеланиями
ЭД
Ответ 5
Имя пользователя и пароль могут быть чувствительны к регистру. Вы проверили, как имя пользователя хранится в вашей таблице, чтобы убедиться, что вы вводите его правильно?
По моему опыту, когда он говорит вам, что адрес электронной почты/пароль неверен, вы можете отвлечься от множества сложных идей, но в конечном итоге это означает, что адрес электронной почты или пароль неверны. Похоже, вы пробовали разные времена с сбросом пароля, поэтому меня заставляет задуматься о имени пользователя. Вы уверены, что правильное поле настроено в качестве имени пользователя (то есть оно может быть электронной почтой или именем пользователя)?
Ответ 6
config.authentication_keys = [: имя_пользователя]
и
config.authentication_keys = [: email]
который одновременно устанавливается в config/initializers/devise.rb, вызывает эту ошибку.