私はSorceryからDeviseに切り替えました。ソーサリーは半無効であり、認証はレール5で働いていますが、テストヘルパーはそうではありません。だから、私はスイッチをDeviseにすることに決めました。私は恐ろしい401のエラーを得ています:401エラーでDevise認証が失敗する
Completed 401 Unauthorized
私はこれに関して多くの質問を見ました...しかし、それらの回答は私を助けませんでした。
私はSorceryのインストールのいくつかの残骸があるとすぐに思うので、私の質問は少し誤解を招く。私はそうかもしれないが、徹底的にチェックした。
1 - 私がパスワードを忘れた場合、私は自動的にログインします。
2 - I完全にクリア既存のパスワードであれば(私は魔術の暗号化は、暗号化を考案よりも差分であるかなり確信しているため)、工夫使っOR
3パスワードを更新 - 私が考案内で認証のために撮影したパスをトレースしていると、私の問題は、以下の方法がヒットしたときに表面:!
def valid_password?(password)
Devise::Encryptor.compare(self.class, encrypted_password, password)
end
それはそのencrypted_passwordを思わ=パスワードが正常に工夫使用して更新されたにもかかわらず、パスワードを入力します。
私はDeviseメソッドのuser.skip_confirmationを使用していることを指摘しておく必要があります。手動でユーザーを確認するので、ユーザーの確認はこの問題の一部ではありません。
私はカスタムDeviseビューを使用しています(まだ変更はしていませんが)。私はカスタム・セッション・コントローラーも生成しました。なぜなら、この問題がPunditポリシーに関連していると思うからです。しかし、私は次のように使用して、アプリケーションのコントローラでポリシー検証をスキップしています...そう、評論家が問題になることはありません。
after_action :verify_authorized, except: :index, unless: :devise_controller?
after_action :verify_policy_scoped, only: :index, unless: :devise_controller?
cookies_serializerは、私が持っている...他の回答に回数を育ててきました試してみました:json、:marshal、::影響のないハイブリッド。
Devise :: Encryptor.compare(self.class、encrypted_password、password)がfalseを返すため、認証に失敗しています。しかし、Deviseが新しいパスワードを保存した場合---どのように比較できるかは真実を返さない。そして、はい---資格情報を正しく入力しています。
ありがとうございました!