1

私は、Railsがform_authenticity_tokenPOST、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?メソッド内からチェックしましたが、 createtrueを返しています。レンダリングを削除し、create.json.rablビューと同じコードでビューを設定しましたshow.json.rabl...サイコロはありません。

Rails 3.1.3 w / Ruby 1.9.2p290 w/cookieセッションストアを実行しています。

真正性トークンはリクエストヘッダー(X-CSRF-Token)を介して送信されています

4

1 に答える 1

4

あなたは間違った印象を受けていました。レールソースの関連ビットからわかるように、フォームの信頼性トークンはセッションの存続期間中同じままです。

于 2012-02-07T15:24:08.810 に答える