2016-11-23 4 views
0

私は自分のシステム上でユーザを管理しています。パスワードをリセットするためのリンクをクリックした場合を除いて、すべてログインが必要です。電子メールに送信されたトークンによってリセットされるため意味がありません。誰でもこの問題に直面したが、何が原因か分かっている?ありがとう!Rails Devise - ログインを求めるパスワードを忘れた

EDIT:

OK、私のミスを得た:before_actionのauthenticate_userがあります!私のアプリケーションコントローラで。リセットパスワードの例外をどのように追加するのですか?

+0

これはDevise' 'からの異常な動作がある成長に合わせてうまくスケールしません。あなたの主張によると、ログイン画面で「パスワードをお忘れですか?」をクリックすると、もう一度ログインして表示されますか?あなたはそれらをリダイレクトしてログインする必要があります。 – fbelanger

+0

@fbelangerいいえ、いいえ。それは電子メールを正しく送信します。パスワードをリセットするリンクに行くと、ログインするように求められます。 –

+0

あなたの答えを編集して、あなたの 'routes.rb'とあなたが疑っているものを見せてください。 – fbelanger

答えて

1

あなたはあなたのコードで問題を見つけましたが、私はあるあなたの他の質問に答えるいます:

私はそのパスワードリセットのための例外を追加する方法を?私は変更しています

あなたApplicationControllerauthenticate_user!べきでしょうか?

明らかに、私は質問を盛り上げているので、答えはノーです。いいえ、アプリケーションがすべての回での認証を必要としません

  1. :なぜここに

    です。ログインする必要がある場合は、アプリケーションが常に認証を必要としないことを意味します。 「パスワードを忘れる」ことができれば、認証は一切不要です。私もこの同じ過ちをした...

  2. 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"' 

:あなたの最初の質問への答え。

しかし、再び、これは悪いですし、あなたのアプリケーションが

+0

うわー、私はあなたのすべての説明、本当に感謝しています。テストのために、私はスキップを使用しますが、私は実際にそれについて読んでそれを修正するのに時間がかかるでしょう。どうもありがとうございます! –

3

before actionのメソッドを見てください。このページを処理するコントローラー(おそらくセッションコントローラーまたはユーザーコントローラー)です。私の推測では、そのリンクのアクションの前におそらくauthenticate_user!のようなものを呼んでいるでしょうか。

+0

それは私がそう思ったことです。しかし、それは工夫からであるので、私はその行動を混乱さえしなかった。私は、load_and_authorize_resourceと共にUsersControllerを持っていますが、それをコメントしていて、リセットされたパスワードリンクのログインを依頼しています。私はそれを探し続けるだろうが、チップのおかげで! –

+0

私の編集をチェックしてください! –

+0

前のアクションを無視したいコントローラーにこの行を追加してください 'skip_before_action:authenticate_user !,:only:= [:name_of_action]' – borbesaur

関連する問題