問題タブ [devise-confirmable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Devise で「確認トークンが無効です」をリダイレクトする方法
Rails アプリケーションを devise :confirmable で構成しました。登録後、ユーザーは確認リンクが記載された電子メールを受け取ります。ユーザーがこのリンクを 2 回クリックすると、トークンが無効になります。これは、アプリケーションで予期される動作です。ただし、「app\views\devise\confirmations\new.html.erb」にあるページにユーザーを送信し、「確認トークンが無効です」というエラーが表示され、そのエラーを表示する必要があります(<%= devise_error_messages! %>)、しかし私のサインインページに。(実際には、次の 2 つの状態が考えられます。a) トークンの有効期限が切れ、ユーザーが確認されていないため、ユーザーはもう一度トークンを要求する必要があります。b)トークンの有効期限が切れ、ユーザーが確認されたため、ユーザーはサインインするだけで済みます)
このために、Devise::ConfirmationsController を継承して独自の ConfirmationsController を作成し、show メソッドをオーバーライドして、次のようにエラーが発生した場合にサインイン ページにリダイレクトできるようにしました。
そして、routes.rb には次の構成があります。
サインイン ページに適切にリダイレクトされますが、resources.errors に存在するエラーをサインイン ページに渡すことができません。どうすればこの問題を解決できますか?
ところで、私のユーザー モデルは次のように構成されています。
ruby-on-rails - メールのみのサインアップで確認できるビューが表示されない
私はこのチュートリアルを逐語的に従いました:
https://github.com/plataformatec/devise/wiki/How-To:-Email-only-sign-up
しかし、ユーザーが確認リンクをクリックすると、パスワードを設定する画面は表示されませんが、確認済みに設定されます。ログを確認しましたが、確認コントローラーにリクエストを送信しますが、ビューは表示されません。トークンを処理して、ログインしたルートにリダイレクトするだけです。
私のルート(指示どおり)は次のとおりです。
そして、私は app/views/devise/confirmations と app/views/confirmations に show.html.erb を持っています。
彼らがあなたに作ってもらったこのコントローラーと何か関係があるのではないかと思います:
ここでビューをレンダリングすることになっていますか? this のスーパークラスが呼び出されないため、次のいずれかが表示されます。
編集:確認コントローラーのコードを変更しrender :action => "show"
て、コントローラーが使用されていることを確認しましたが、効果はありませんでした。私は再確認しましたがrake routes
、それは正しいようですが、オーバーライドしていないようです:
ruby-on-rails - ユーザーサインアップ時に「確認トークンが無効です」を工夫する
Rails 4 と Devise 3.1.0 を Web アプリで使用しています。ユーザーのサインアップをテストする Cucumber テストを作成しました。電子メールから「アカウントの確認」リンクをクリックすると失敗します。
このエラーは、Web サーバーから手動でサインアップした場合にも再現されるため、Cucumber の問題ではないようです。
をお願いします:
- ユーザーは、この電子メールのリンクからワンクリックでアカウントを確認できます
- アカウントを確認した後、ユーザーにサインインしたままにする
私はセットアップしました:
- GitHub の最新の Devise コード (3.1.0、ref 041fcf90807df5efded5fdcd53ced80544e7430f)
- 実装する
User
クラスconfirmable
- 「デフォルト」の確認コントローラーを使用する (独自のカスタム コントローラーを定義していません)。
私はこれらの投稿を読みました:
そして試しました:
- 私のDeviseイニシャライザで設定
config.allow_insecure_tokens_lookup = true
すると、起動時に「不明なメソッド」エラーがスローされます。さらに、これは一時的な修正にすぎないように思われるため、使用は避けたいと思います。 - DB をパージし、ゼロから開始しました (したがって、古いトークンは存在しません)
アップデート:
登録後に に保存されている確認トークンを確認しますUser
。email トークンは DBs トークンと一致します。上記の投稿によると、Devise の新しい動作は想定されておらず、代わりに電子メールのトークンに基づいて 2 番目のトークンを生成する必要があると述べています。これは疑わしい。実行User.confirm_by_token('[EMAIL_CONFIRMATION_TOKEN]')
すると、エラー セット "@messages={:confirmation_token=>["is invalid"]}" を持つユーザーが返されます。これが問題の原因であると思われます。
トークンの不一致が問題の核心であるようです。コンソールで次のコードを実行して、ユーザーの Confirmation_token を手動で変更すると、確認が成功します。
では、そもそも間違った確認トークンを DB に保存するのはなぜでしょうか? 私はカスタム登録コントローラを使用しています...何かが間違って設定されている可能性がありますか?
ルート.rb
users/registrations_controller.rb :
ruby-on-rails - devise gemを使用して確認リンクをクリックした後のサインインを避けますか?
gemを使用devise
しています。確認リンクをクリックした後、直接サインインしたいです。現在、再度サインインするよう求められています。
最近、devise の初期化ファイルに以下を追加しました。
助言がありますか?
ruby-on-rails - メールリンクが使用されていないときに確認されたDevise 3.1アカウント
解決策を探し回っていましたが、何も見つかりませんでした。確認メールの送信をスキップして、ユーザー アカウントのパスワードが設定された後に送信しようとしています。ただし、パスワードが設定された後、confirmed_at も設定されるため、メール確認リンクが使用される前に確認されます。以下は私のコードです。前もって感謝します
これ(user.rb)で確認を飛ばしています
次に、ユーザーがパスワードを設定すると (user_controller.rb)
ruby-on-rails - デバイス認証で 2 つのメールを送信するには?
ruby on rails初心者ですが、自分のプロジェクトでユーザーがアカウントを作成した際に2通のメールを送りたいので、ユーザーがメールとパスワードを入れたリクエストを送ってきた際に、自分のメールアドレスを確認できるメールを送って、私の電子メールに対するユーザーの要求を通知するメッセージ。この問題を解決するにはどうすればよいですか? ありがとう。