ActionController :: InvalidAuthenticityToken в PostsController # создать - PullRequest
0 голосов
/ 04 июня 2018

в моем блог-приложении rails я получаю это сообщение об ошибке при попытке отправить форму для нового сообщения:

ActionController :: InvalidAuthenticityToken в PostsController # create ActionController :: InvalidAuthenticityToken Извлеченный источник (вокруг строки # 211):

      def handle_unverified_request
        raise ActionController::InvalidAuthenticityToken
      end
    end
  end

это мой файл posts_controller.rb:

class PostsController < ApplicationController
  def index
  end

  def new
  end

  def create
    @post=Post.new(post_params)
    @post.save

    redirect_to @post
  end

  def show
    @show=Post.find(params[:id])
  end

  private
    def post_params
      params.require(:post).permit(:title,:body)
    end
end

это мой код формы:

<font color="#BD004B"><h1>New Post<br></h1></font>

<%=form_for :post, url: posts_path do |f|%>
  <p>
  <%=f.label :title%><br>
  <%=f.text_field :title%>
  </p>
  <p>
  <%=f.label :body%><br>
  <%=f.text_area :body%>
  </p>
  <p>
    <%=f.submit%>
  </p>
<%end%>

1 Ответ

0 голосов
/ 04 июня 2018

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

Исключение обычно возникает в двух случаях: ваш сеанс закончился, наша формаотправлено через ajax без csrf_meta_tags.

Решающее решение проблемы - спасти исключение и сбросить сеанс пользователя следующим образом:

rescue_from ActionController::InvalidAuthenticityToken do
  logger.info "Compromised session found."
  reset_session
  flash[:error] = "You're session has expired"
  redirect_to root_path # or new_user_session_path
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...