3

ユーザーがスクリプトまたは自動化を使用してフォームに入力しようとすると、アプリケーション コントローラーで次のエラーが発生します。

"ActionController::InvalidAuthenticityToken"

これは、有効な本物のユーザーがフォームに入力し、ブラウザを閉じ、ブラウザの履歴からページを再度開いてフォームを送信したときに発生します。

この場合、例外通知を使用して例外を送信したくありません。また、更新された要求メッセージでモーダルを表示したいと考えています。

したがって、 application_controllerを次のように変更しました

class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception

  rescue_from ActionController::InvalidAuthenticityToken, with: :handle_csrf_error

  def handle_csrf_error(exception)
    respond_to do |format|
      format.js {
        render 'invalid_requests/error'
      }
      format.html {
        render text: I18n.t('errors.messages.csrf_error')
      }
    end
    ExceptionNotifier.notify_exception(exception)
  end

end

これをあらゆる種類のリクエストで機能させたいと考えています。

html & js リクエストのレスポンスを追加しました

しかし、json リクエストの処理方法がわかりません。

PS > json リクエストが web アプリケーションから送信され、より多くのケースをロードし、場合によっては例外が発生するため、これを処理したいと考えています。

Rails のバージョンは 4.2 です

4

2 に答える 2

0

コントローラーの認証トークンのチェックをオフにします。

skip_before_action :verify_authenticity_token

http://stackoverflow.com/questions/1177863/ddg#1177883を参照してください

于 2018-11-18T23:18:09.580 に答える