私は、Railsがform_authenticity_token
POST、PUT、またはDELETEアクションの後に再生成するという印象を受けました。しかし、何らかの理由で、ユーザーリソースへのPOSTが成功した後、form_authenticity_token
は再生成されません。同じCSRFトークンを何度も何度でもPOSTできます。
名前空間付きのAPIがあり、RABLgemを使用して応答を作成しています。これが私がすべてをセットアップする方法です...
class Api::V1::UsersController < Api::V1::ApplicationController
...
def create
@user = User.new(params[:user])
render "show", :status => (@user.save ? :ok : :unprocessable_entity)
end
...
end
class Api::V1::ApplicationController < ApplicationController
layout '/api/v1/layouts/application.json.erb'
respond_to :json
before_filter :authenticate_user!
...
end
class ApplicationController < ActionController::Base
protect_from_forgery
end
投稿は正常に実行され、development.logまたはコンソール$ rails s
ログにエラーや警告はありません。
verified_request?
メソッド内からチェックしましたが、 create
trueを返しています。レンダリングを削除し、create.json.rabl
ビューと同じコードでビューを設定しましたshow.json.rabl
...サイコロはありません。
Rails 3.1.3 w / Ruby 1.9.2p290 w/cookieセッションストアを実行しています。
真正性トークンはリクエストヘッダー(X-CSRF-Token)を介して送信されています