こんにちは、私の質問を表示していただきありがとうございます。私は別のサーバー上のReactフロントエンドで動作するRails APIを構築しています。私はDevise Token Auth gemを使用しています。ログインに成功し、ログアウトし、問題なく複数のリソースを取得できます。変更トークンを処理するために、私は各要求時にヘッダーを更新しています。Devise Token AuthはPUTルートで認証されません
私は401完全なエラーメッセージを取得、その場合には、私は、リソースを更新するために、PUT要求を作るしようとしたとき、私はあるに実行している問題は、:
Started PUT "/api/stores/3/orders/1" for 127.0.0.1 at 2017-07-12 16:00:05 -0400
Processing by Api::OrdersController#update as HTML
Parameters: {"order"=>{"id"=>1, "provider_notes"=>"tailor notes"}, "headers"=>{"client"=>"YVa0NIlxAdm6BLQXk0xeJw", "access-token"=>"bNc9BB0TgICIJzGfM4H_6A", "uid"=>"[email protected]"}, "store_id"=>"3", "id"=>"1"}
Can't verify CSRF token authenticity.
Filter chain halted as :authenticate_user! rendered or redirected
Completed 401 Unauthorized in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
チェックした後、アクセストークンを実際には私が最後のリクエストから得たトークンなので、エラーメッセージに印刷されています。ここで私が協力しているコントローラがあります。私はauthenticate_userに合格することができません!アクションの前に。
class Api::OrdersController < ApplicationController
before_action :authenticate_user!
before_action :set_order, only: [:show, :update]
def index
render :json => current_user.store.open_orders.as_json(include: [:customer], methods: [:alterations_count])
end
def show
render :json => @order.as_json(include: [:customer, :items => {include: :item_type}])
end
def update
if @order.update(order_params)
render :json => @order
.as_json(include: [:customer, :items => {include: :item_type}])
else
byebug
end
end
private
def set_order
@order = Order.find(params[:id])
end
def order_params
if current_user.tailor?
params.require(order).permit(:requester_notes, :arrived, :fulfilled)
end
end
end
私が使っていたget要求とput要求が異なっている理由は何ですか? Devise Auth Tokenでこれを回避するためのアドバイスはすばらしいでしょう。ありがとう。