20 Stimmen

RoR-Gerät: sign_in liefert immer ungültige E-Mail/Passwort

Jedes Mal, wenn ich mich anmelde, erhalte ich die Fehlermeldung, dass die E-Mail und das Kennwort ungültig sind.

Routen:

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

Benutzermodell:

devise :database_authenticatable, :confirmable, :recoverable, :rememberable, :trackable

attr_accessor :password
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :gender, :remember_me

Ansicht:

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

Ich habe versucht, die Routen zu ändern:

get '/users/sign_in' => 'devise/sessions#new', :as => :new_user_session

und die entsprechenden Pfade geändert, aber das hat nichts geändert.

Ich habe sogar den Code in der Ansicht von geändert:

if signed_in?(:user)

zu:

if user_signed_in?

und habe eine Kombination dieser Dinge ausprobiert, aber nichts hat funktioniert.

Ich habe devise gebeten, auch die Bestätigung zu übernehmen, was ich getan habe, indem ich den generierten Link in den Browser kopiert habe, und er meldet mich beim ersten Mal als Benutzer an. Außerdem kann ich das Kennwort über den Bestätigungslink in der E-Mail ändern, wodurch ich mich auch bei der Änderung des Kennworts anmelden kann. Sobald ich mich jedoch abmelde und wieder anmelde, wird mir mitgeteilt, dass die E-Mail bzw. das Kennwort wieder ungültig ist.

Kann jemand helfen?

Ich benutze rails 3.0.7, devise 1.4.5, capybara 1.1.1, cucumber 1.0.6, mysql2 0.2.6 und rake 0.8.7, falls das jemandem hilft.

Danke

EDIT :

Um künftigen Nutzern zu helfen: An dem Edelstein gibt es eigentlich nichts auszusetzen. Er funktioniert einwandfrei. Das Problem liegt bei meiner Datenbank. Aus irgendeinem Grund wählt es eine NULL-E-Mail aus der Datenbank aus, anstatt die Daten des Benutzers zu holen, den ich versuche anzumelden. Ich bin herauszufinden, wie man dies jetzt zu beheben und wird aktualisiert, sobald ich es herausfinden.

11voto

marcamillion Punkte 31341

Ich hatte ein ähnliches Problem bei einer Neuinstallation von Devise, aber ich habe herausgefunden, dass, wenn ich bundle update dann meinen Dev-Server neu gestartet hat, funktioniert es.

Zuerst sah ich die DB-Abfrage nicht in der development.log aber nachdem ich meine Gemfile (um sicher zu gehen, dass ich das neueste Devise-Gem verwende) und den Server neu gestartet habe, sehe ich jetzt die Datenbankabfragen in meiner Logdatei und es funktioniert (auf magische Weise).

Ich hoffe, das hilft.

Übrigens, ich weiß nicht, ob Ihnen das weiterhilft... aber das sind die Routen in meinem 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

9voto

sherenator Punkte 633

Ich bin auf dieses Problem gestoßen, als ich beides hatte

config.authentication_keys = [ :username ]

et

config.authentication_keys = [ :email ]

gleichzeitig in config/initializers/devise.rb aktiviert.

Nachdem die doppelte Einstellung entfernt wurde, war die Authentifizierung erfolgreich.

6voto

Rizowski Punkte 3448

Als ich auf dieses Problem stieß, ging ich meine Devise-Konfigurationsdatei in

config/initializers/devise.rb

Dann habe ich den Teil gefunden, den ich nach meiner Erinnerung in :username geändert hatte

config.authentication_keys = [ :username ]

Ich änderte dies zurück in :email . So hat es schließlich geklappt.

1voto

chischaschos Punkte 557

Ich denke, die attr_accessor vermasselt mit attr_accessible . Brauchen Sie wirklich einen attr_accessor?, wenn nicht, entfernen Sie ihn einfach.

Probieren Sie es aus und lassen Sie mich bitte wissen, wie es funktioniert.

Mit freundlichen Grüßen

ED

0voto

Joel Friedlaender Punkte 2191

Beim Benutzernamen und beim Passwort kann zwischen Groß- und Kleinschreibung unterschieden werden. Haben Sie überprüft, wie der Benutzername in Ihrer Tabelle gespeichert ist, um sicherzustellen, dass Sie ihn richtig eingeben?

Ich habe die Erfahrung gemacht, dass man bei der Meldung "E-Mail/Passwort falsch" auf viele komplizierte Ideen kommen kann, aber letztendlich ist die E-Mail oder das Passwort falsch. Es klingt so, als hätten Sie mehrmals versucht, das Passwort zurückzusetzen, daher frage ich mich nach dem Benutzernamen. Sind Sie sicher, dass in Devise das richtige Feld für den Benutzernamen eingerichtet ist (d. h. es könnte sich um eine E-Mail oder einen Benutzernamen handeln)?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X