2016-03-08 1 views
1

Je reçois l'erreur suivante lors d'une demande de poste à /locations/1/submit-to-shopify dans mon application:Pourquoi une requête POST, bien dirigé, lancer une erreur « ActionController :: InvalidAuthenticityToken » dans Rails et la gemme shopify_app

ActionController::InvalidAuthenticityToken in LocationsController#submitshopify 

Vous pouvez voir l'itinéraire de publication dans mon fichier routes.rb ci-dessous.

root 'home#index' 

    controller :sessions do 
    get 'login' => :new, :as => :login 
    post 'login' => :create, :as => :authenticate 
    get 'auth/shopify/callback' => :callback 
    get 'logout' => :destroy, :as => :logout 
    get 'locations/:id' => 'locations#index' 
    post 'locations/:id/submit-to-shopify' => 'locations#submitshopify' 
    end 

Toutes les autres demandes fonctionnent correctement. Voici mon contrôleur Emplacements:

class LocationsController < AuthenticatedController 
    def index 
    @location_id = params[:id] 
    @location = Location.find(@location_id) 
    end 
    def submitshopify 
    @location_id = params[:id] 
    @location = Location.find(@location_id) 
    @product_handle = params[:product_handle] 
    @product = ShopifyAPI::Product.find_by handle: @product_handle 
    end 
    def new 
    end 
    def create 
    end 
    def show 
    end 
    def edit 
    end 
    def update 
    end 
    def destroy 
    @location_id = params[:id] 
    @location = Location.find(@location_id) 
    @destroy_status = @location.destroy 
    end 
end 

S'il est une conséquence, je me sers du bijou « de shopify_app », qui comprend « shopify_api ». J'ai suivi toutes les instructions indiquées pour ces deux modules, et je me suis authentifié avec Shopify dans toutes les autres pages/contrôleurs.

Répondre

1

Avez-vous utilisé des aides pour créer votre formulaire de soumission? Ou avez-vous créé manuellement? Si créé manuellement, avez-vous ajouté le

<%= csrf_meta_tags %> 

à votre formulaire?

Vérifiez auprès de votre firebug s'il y a un jeton d'authentification à la fin du formulaire. Même la source de vue devrait vous le montrer.

Nous devrions rejeter que quiconque essaie de spam en utilisant votre formulaire au moyen d'un client http comme curl sans réellement être sur votre site (contrefaçon de demande intersites)