ActionController :: InvalidAuthenticityToken при отправке сообщения на мой сервер Rails 6 - PullRequest
0 голосов
/ 04 августа 2020

У меня есть приложение Rails 6, и я хочу, чтобы зарегистрированные и гостевые пользователи могли комментировать блог. Для этого в клиенте я делаю почтовый запрос

          let formData = new FormData();
          formData.append("comment", comment);

          fetch(`http://localhost:3000/blogs/${blogId}/comments`, {
            method: "POST",
            body: formData,
          })
            .then((response) => {
              console.log(response);

            })
            .catch((err) => console.log(err));

Затем на сервере

В моей comments_controller.rb

  def create
    if current_user.is_a?(GuestUser)
      @comment = current_user.comment.new(blog_id: params[:blog_id], guest_user: params[:guest_user])
    else
      @comment = current_user.comments.new(blog_id: params[:blog_id])
    end

    ...
  end

гостевой пользовательской модели

class GuestUser < User
  attr_accessor :name, :first_name, :last_name, :email
end

И я получаю ActionController::InvalidAuthenticityToken в контроллере комментариев.

Если я добавляю config.action_controller.default_protect_from_forgery = false в config/application.rb, он работает как для пользователей, так и для гостей, но не так делает меня уязвимым?

Как я могу решить эту проблему, не задавая default_protect_from_forgery = false?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...