RoR devise: sign_in всегда возвращает неверный адрес электронной почты / пароль - PullRequest
18 голосов
/ 18 сентября 2011

Каждый раз, когда я вхожу, я получаю сообщение об ошибке, что адрес электронной почты / пароль неверен.

маршруты:

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

view:

<% 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?

и сделал комбинацию этих вещей, и ничего не работает.

Я также попросил devise обработать подтверждение, что я и сделал, скопировав сгенерированную ссылку в браузер, и в первый раз я зарегистрировался как пользователь.Это также позволяет мне изменить пароль через ссылку для подтверждения по электронной почте, которая также регистрирует меня при смене пароля.Но как только я выхожу и снова захожу, он говорит мне, что адрес электронной почты / пароль снова недействителен.

Кто-нибудь может помочь?

Я использую rails 3.0.7, devise 1.4.5, capybara 1.1.1, огурец 1.0.6, mysql2 0.2.6 и рейк 0.8.7, если это кому-нибудь поможет.

Спасибо

РЕДАКТИРОВАТЬ:

Чтобы помочь будущим пользователям, на самом деле нет ничего плохого в драгоценном камне.Работает нормально.Проблема с моей базой данных.По какой-то причине он выбирает NULL-сообщение из базы данных вместо того, чтобы извлекать информацию о пользователе, которому я пытаюсь войти. Я выясняю, как это исправить сейчас, и обновлю, как только выясню.

Ответы [ 6 ]

10 голосов
/ 21 сентября 2011

У меня возникла аналогичная проблема с новой установкой Devise, но я обнаружил, что если я запустил bundle update, то перезапустил мой dev-сервер, он заработал.

Сначала я не виделзапрос к БД в development.log, но как только я обновил свой Gemfile (чтобы убедиться, что я использую последний гем Devise) и перезапустил сервер, я теперь вижу запросы db в моем лог-файле, и он работает (по волшебству).

Надеюсь, что это поможет.

Кстати, не уверен, поможет ли это вам ... но это маршруты в моем 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
8 голосов
/ 08 января 2013

Я столкнулся с этой проблемой, когда у меня были оба

config.authentication_keys = [ :username ]

и

config.authentication_keys = [ :email ]

включается одновременно в config / initializers / devise.rb.


После удаления дубликата настройка аутентификации прошла успешно.

6 голосов
/ 24 декабря 2012

Когда я столкнулся с этой проблемой, я вернулся через свой конфигурационный файл Devise в

config / initializers / devise.rb

Затем я нашел часть, которую явспомнил, что я изменил на: имя пользователя

config.authentication_keys = [ :username ]

Я изменил это обратно на :email.Это закончилось тем, что заставило это работать.

1 голос
/ 20 сентября 2011

Я думаю, что attr_accessor портится с attr_accessible . Вы действительно должны иметь attr_accessor ?, если не просто удалить его.

Попробуйте и, пожалуйста, дайте мне знать, как это происходит.

С наилучшими пожеланиями

ED

0 голосов
/ 12 марта 2017

config.authentication_keys = [: имя пользователя]

и

config.authentication_keys = [: электронная почта]

, одновременно установленная в config / initializer / devise.rb, приведет кэта ошибка.

0 голосов
/ 18 сентября 2011

Имя пользователя и пароль могут быть чувствительными к регистру.Вы проверили, как имя пользователя хранится в вашей таблице, чтобы убедиться, что вы вводите его правильно?

По моему опыту, когда он говорит, что адрес электронной почты / пароль неверен, вы можете отвлечься от множества сложных идей, но в итоге получается, что адрес электронной почты или пароль были неверными.Похоже, вы пытались несколько раз сбросить пароль, поэтому меня удивляет имя пользователя.Вы уверены, что в devise в качестве имени пользователя установлено правильное поле (т. Е. Это может быть адрес электронной почты или имя пользователя)?

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