2017-07-05 6 views
0

Etwas seltsam passiert, wenn jemand eine Einladung zu meiner Website akzeptiert, sie ihr erstes Passwort festlegen, aber dann wird dieses Passwort in Zukunft nicht als korrekt akzeptiert. Zum Beispiel habe ich mich selbst eingeladen und dann die Einladung angenommen und mein erstes Passwort auf "foobar" gesetzt.Rails 4 + Devise: Passwort bestätigen

Wenn ich die Konsole öffnen und das Passwort überprüfen Ich sehe:

User.find_by(email: "[email protected]").valid_password?("foobar") 
=> false 

Gibt es eine Möglichkeit mein unverschlüsselte Passwort zu sehen, so dass ich diagnostizieren, wo könnte es herauszufinden, setzen oder eine andere Art und Weise werden immer Wo wird das Passwort aktualisiert?

Devise Initializer:

Devise.setup do |config| 

    config.secret_key = '*****' 

    config.mailer_sender = '[email protected]' 

    config.mailer = 'CustomDeviseMailer' 
    require 'devise/orm/active_record' 

    config.case_insensitive_keys = [:email] 
    config.strip_whitespace_keys = [:email] 
    config.skip_session_storage = [:http_auth] 
    config.stretches = Rails.env.test? ? 1 : 10 
    config.reconfirmable = true 
    config.expire_all_remember_me_on_sign_out = true 
    config.password_length = 8..72 
    config.reset_password_within = 6.hours 
    config.sign_out_via = :delete 
end 

Devise Invitable Initializer:

Devise::InvitationsController.class_eval do 
    def update_resource_params 
    params.require(resource_name).permit( 
      :email,:encrypted_password,:reset_password_token,:reset_password_sent_at,:remember_created_at,:sign_in_count,:current_sign_in_at,:last_sign_in_at,:current_sign_in_ip,:last_sign_in_ip,:created_at,:updated_at,:admin,:invitation_token,:invitation_created_at,:invitation_sent_at,:invitation_accepted_at,:invitation_limit,:invited_by_id,:invitations_count,:invited_by_type,:employee,:is_client,:location_id,:user_type, :location_id 
    ) 
    end 
end 
+0

Geben Sie Ihren Geräteinitialisierer hier an. –

+0

Ich habe es über –

Antwort

1

Ihr Passwort wird nicht, weil diese Linie auf Ihrer devise initializer akzeptiert werden:

config.password_length = 8..72 

„foobar "hat nur 6 Zeichen lang. Hast du längere Passwörter ausprobiert? Deshalb gibt valid_passwordfalse zurück. Wenn Sie Passwörter wie "foobar" akzeptieren wollen, ändern Sie den Bereich für die Passwortvalidierung.

UPDATE

erlauben password auf Ihrem starken Parameter, sind Sie nicht ermöglicht Passwort-Attribut auf die Steuerung.

Als eine Anmerkung, ist sehr gefährlich für Sie, jedes Feld zu Ihren starken Parametern hinzuzufügen. Wenn Sie so etwas zulassen, kann ich leicht alles auf Ihren Controller übertragen und sensible Daten ändern. Zum Beispiel könnte ich das verschlüsselte_passwort, reset_password_token unter anderen Feldern ändern, die niemals geändert werden sollten. Erlaube nur Parameter, die der Benutzer weitergeben soll, sonst nichts, oder du kannst deiner App eine große Sicherheitslücke aussetzen. Reference.

+0

hinzugefügt Ich habe nur "Foobar" für die Frage verwendet, in Wirklichkeit war 8 Zeichen. –

+0

Aktualisieren Sie meine Antwort, sehen Sie, ob es funktioniert. –

+0

Es ist so seltsam, weil ich glaube nicht, dass ich das vor kurzem geändert habe, doch das hat das Problem behoben! Danke –

Verwandte Themen