Что это значит ? >> ActionController :: InvalidAuthenticityToken - PullRequest
1 голос
/ 24 августа 2010

Мне было любопытно, что это вообще значило.

Но вот особенности ..

Я делаю сортируемый проект jquery, который касается этого действия rails:

def update_order
  params[:media].each_with_index do |id, index|
    media = @organization.media.find(id)
    media.do_not_touch = true
    media.update_attribute('position', index+1)
  end if params[:media]
  render :nothing => true
end

Я просто ищу общую причину возникновения этой ошибки.

Ответы [ 2 ]

5 голосов
/ 24 августа 2010

Rails автоматически проверяет на поддельные данные при отправке данных.Из документа:

Защита действий контроллера от атак CSRF путем обеспечения того, чтобы все формы, поступающие из текущего веб-приложения, а не поддельные ссылки с другого сайта, выполнялись путем встраивания токена на основе случайногострока, хранящаяся в сеансе (которую злоумышленник не узнает) во всех формах и Ajax-запросах, сгенерированных Rails, а затем проверяющих подлинность этого токена в контроллереВызов Ajax, или вы также можете отправить параметр с именем «authenticity_token» со значением <%= form_authenticity_token %>

Чтобы отключить его (что я НЕ рекомендовал бы), вы можете выполнить одно из следующих действий:

class FooController < ApplicationController
  protect_from_forgery :except => :update_order

  # you can disable csrf protection on controller-by-controller basis:
  skip_before_filter :verify_authenticity_token
end
1 голос
/ 24 августа 2010

Обычные Rails помощники формы вставят скрытый токен аутентификации в форму.Когда вы катите свой собственный, например, что вы, вероятно, делаете для этого кода Ajax, вы, вероятно, не добавили токен.

В этом старом посте есть несколько хороших советов, которые могут помочьвы, в зависимости от того, действительно ли вы хотите использовать этот токен или просто хотите отключить его для этого действия.

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