あなたはあなたのコードで問題を見つけましたが、私はあるあなたの他の質問に答えるいます:
私はそのパスワードリセットのための例外を追加する方法を?私は変更しています
:
あなたApplicationController
内authenticate_user!
べきでしょうか?
明らかに、私は質問を盛り上げているので、答えはノーです。いいえ、アプリケーションがすべての回での認証を必要としません
- :なぜここに
です。ログインする必要がある場合は、アプリケーションが常に認証を必要としないことを意味します。 「パスワードを忘れる」ことができれば、認証は一切不要です。私もこの同じ過ちをした...
ApplicationController
のためにauthenticate_user!
は設計されていません。なぜなら、ApplicationController
はすべてのコントローラですからです。つまり、コントローラーへのアクセスを制限するように設計されていますが、具体的にはApplicationController
ではありません。これを最初に追加しなければならない理由は、たとえば、ログインしたユーザーのみが自分の記事を編集できるようにするためです。記事を編集する人は誰もいませんが、誰かが記事を見たいと思っています。私はあなたのアプリについて何も知らないが、通常、認証は非常に特殊な例外を除いてケースごとのケースである。
したがって、貼り付けてください:authenticate_user!
何度も、それは大丈夫です。 Theresはまた別の方法です(私があなたのroutes.rb
を求めていた理由です)。
https://github.com/plataformatec/devise/wiki/How-To:-Define-resource-actions-that-require-authentication-using-routes.rb
P.S.私はこのコントローラの文字列表現を忘れ
before_action :authenticate_user!, unless: 'params[:controller] == "devise_passwords"'
または
before_action :authenticate_user!, unless: 'params[:controller] == "passwords"'
:あなたの最初の質問への答え。
しかし、再び、これは悪いですし、あなたのアプリケーションが
これはDevise' 'からの異常な動作がある成長に合わせてうまくスケールしません。あなたの主張によると、ログイン画面で「パスワードをお忘れですか?」をクリックすると、もう一度ログインして表示されますか?あなたはそれらをリダイレクトしてログインする必要があります。 – fbelanger
@fbelangerいいえ、いいえ。それは電子メールを正しく送信します。パスワードをリセットするリンクに行くと、ログインするように求められます。 –
あなたの答えを編集して、あなたの 'routes.rb'とあなたが疑っているものを見せてください。 – fbelanger