デバイスのvalid_passwordに奇妙な問題がありますか? 質問する

デバイスのvalid_passwordに奇妙な問題がありますか? 質問する

過去 2 時間、ログインできないという、devise の奇妙な問題をデバッグしようとしていました。

私が言及している内容は次のとおりです。

password 
=> 'vinodsobale'

password == 'vinodsobale'
=> true

resource.valid_password?(password)

=> false

resource.valid_password?('vinodsobale')

=> true

スクリーンショットも添付します:

ここに画像の説明を入力してください注: デバイス内でデバッガーを有効にしたので、上記のコードはデバイスの内部コードです。

私にとっては、これは の問題のように見えますDevise.secure_compare

ベストアンサー1

この問題は、Ruby 2.2.0の既知の文字列破損バグが原因で、修理済み2.2.2 で。

で説明したようにバグレポート破損はBCryptがC拡張から特定の文字列作成APIを呼び出したときに発生し、Devise v3.3.0::BCrypt::Engine.hash_secretDevise::Models::DatabaseAuthenticatable#valid_password?方法。デバイス固有の回避策このバグに対する修正は v3.5.0 で公開されました。

解決策は次のいずれかです。

  • Ruby を にダウングレードする< 2.2.0か、 にアップグレードします>= 2.2.2
  • Devise を にアップグレードします>= 3.5.0

おすすめ記事