2016-04-06 24 views
0

PUT "/api/shipments/H10372375236/ready_for_pickup" yapıyorum, ancak bu Spree::BaseController#authenticate_user durur.Solidus/Spree için yeni bir API son noktası oluştururken 401'den (Yetkisiz) nasıl kaçınırım?

Spree::Core::Engine.routes.draw do 
    namespace :api, defaults: { format: 'json' } do 
    put '/shipments/:id/ready_for_pickup' => 'shipments#ready_for_pickup', as: :ready_for_pickup 
    end 
end 

Rails.application.routes.draw do  
    mount Spree::Core::Engine, :at => '/' 
end 

rake routes: Bu benim rotalar

<%= form_tag(spree.api_ready_for_pickup_path(shipment), { method: "PUT", remote: true, id: "admin-ship-shipment" }) do %> 
    <%= submit_tag Spree.t(:ready_for_pickup), class: "ship-shipment-button" %> 
<% end %> 

geçerli: BaseController#api_key

gerektirdiği gibi My PUT isteği Bu benim düğme kodudur herhangi bir X-Spree-Token başlığını içermiyor Gicle here olarak kullanılabilir. Geçerli kullanıcı için yönetici arayüzünde bir API anahtarı oluşturdum. PUT isteğinin eksik X-Spree-Token içerdiğinden nasıl emin olurum?

cevap

0

ben şöyle kontrolörünüzün güncelleme eylem başlığı ayarlamaktır that SO answer lehine, içinde olacaktır:

response.headers["X-Spree-Token"] = auth_token 
+0

'auth_token' Spree' bulunmaz :: Api :: ShipmentsController' – martins

+0

Burada, 'auth_token' senin "X-Spree-Token" ile değiştirilecek olduğu;) – born4new

+0

Evet, ama ben yazarken İlk yazıdaki X-Spree-Token'im yok. :-( – martins

0

Ben formda bir belirteç param olarak spree_api_key göndererek düzelttim.

<%= form_tag(spree.api_ready_for_pickup_path(shipment), { method: "PUT", remote: true, id: "admin-ship-shipment" }) do %> 
     <%= hidden_field_tag :token, try_spree_current_user.spree_api_key %> 
     <%= submit_tag Spree.t(:ready_for_pickup), class: "ship-shipment-button" %> 
    <% end %>