Rails4.0でActionController::InvalidAuthenticityTokenでエラーになった場合

「Herokuではじめる Railsプログラミング入門」のサンプルでうまく動かなかった原因が分かったのでメモを残しておきます。P,160からの「フォームを送信しよう」を入力して動かしてみた。

最初の画面

で、エラー画面。

googleさまに対処方法を尋ねたら、Rails2.0よりCSRF(クロスサイトリクエストフォージェリ)対策が施されているため、エラーになってしまうのだとか。クロスサイトリクエストフォージェリとは「Webサイトにスクリプトや自動転送(HTTPリダイレクト)を仕込むことによって、閲覧者に意図せず別のWebサイト上で何らかの操作(掲示板への書き込みなど)を行わせる攻撃手法」だそうで、代表的なサイバー攻撃の一つだとか。

で。この対応策として、sample_controller.rbに次の一行(赤字のやつ)を書き足した。

====================================
#coding:utf-8

class SampleController < ApplicationController

skip_before_filter :verify_authenticity_token ,:only=>[:index2]

  def index2
    if request.post? then
        @msg = "you type: " + params[:text1]
    else
        @msg="なにか入力してください。"
    end
  end

end
====================================

で、再度実行してみると、無事にこちらの画面が出現。

「Herokuではじめる Railsプログラミング入門」のミスでもなんでもなくて、もともとRuby1.9.3とRails3の組み合わせで書かれているので問題が出ないのかもしれません。

0 件のコメント:

コメントを投稿