2017-07-05 18 views
0

誰かが自分のウェブサイトへの招待を受け入れて初期パスワードを設定したが、その後そのパスワードが正しいとは限りません。たとえば、私は自分自身を招待し、招待状を受け入れ、私の初期パスワードを "foobar"に設定しました。私は、コンソールを開いて、パスワードを確認するとRails 4 + Devise:パスワードの検証

私は以下を参照してください。私はどこを設定取得される可能性があります診断したり、見つけ出すの他のいくつかの方法ができるように

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

私の暗号化されていないパスワードを表示する方法はありますパスワードはどこで更新されていますか?

工夫イニシャライザ:

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 

工夫Invitableイニシャライザ:

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

あなたのdevise initializerをここに投稿してください。 –

+0

私はそれを上に追加しました –

答えて

1

パスワードが受け付けられませんので、あなたの工夫初期化子でこの行:

config.password_length = 8..72 

「foobarに"は6文字しかありません。長いパスワードを試しましたか?だからvalid_passwordfalseを返します。 "foobar"のようなパスワードを受け入れる場合は、パスワード検証の範囲を変更してください。

UPDATE

許可passwordあなたの強いパラメータの、あなたのコントローラには許可パスワード属性じゃないんです。

重要なパラメータにすべてのフィールドを追加することは非常に危険です。このようなことを許可すれば、コントローラに何かを簡単に投稿し、機密データを変更することができます。たとえば、決して変更してはならない他のフィールドのうち、encrypted_pa​​ssword、reset_password_tokenを変更することができます。あなたが渡すことを望むパラメータだけを許可するか、それ以外は何もしないでください。または、あなたのアプリに巨大なセキュリティホールを公開することができます。 Reference

+0

私はちょうど質問に "foobar"を使用しました、実際には8文字でした。 –

+0

私の答えを更新して、動作するかどうか確認してください。 –

+0

最近変わったとは思えないので奇妙ですが、これで問題は解決しました!ありがとう –

関連する問題