Как обработать JSON-запрос Invalid Authenticity Token от контроллера приложений в rails - PullRequest
0 голосов
/ 16 ноября 2018

Когда пользователь пытается заполнить форму, используя скрипт или автоматизацию, контроллер приложения выдает ошибку

"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 отправляется из веб-приложения длязагрузить больше кейса, а иногда возникает исключение, поэтому я хочу, чтобы я справился с этим.

Моя версия Rails - 4.2

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Отключите проверку токена подлинности в вашем контроллере.

skip_before_action :verify_authenticity_token

См. http://stackoverflow.com/questions/1177863/ddg#1177883

0 голосов
/ 19 ноября 2018

После того, как вы убедитесь, что ваш запрос правильно выполняет запрос json, а не запрос js (проверьте заголовок Content-Type).Добавьте format.json на свой сервер ответ .

respond_to do |format|
  format.json { render json: true }
end
...