2010-08-24 4 views
1

J'étais curieux de savoir ce que cela signifiait en général.Qu'est-ce que cela signifie? >> ActionController :: InvalidAuthenticityToken

Mais voici les détails ..

Je fais un projet jquery sortable, qui touche cette rails l'action:

def update_order 
    params[:media].each_with_index do |id, index| 
    media = @organization.media.find(id) 
    media.do_not_touch = true 
    media.update_attribute('position', index+1) 
    end if params[:media] 
    render :nothing => true 
end 

Je suis à la recherche d'une raison générale pour laquelle cette erreur vient en haut

Répondre

5

Rails automatically checks pour les données contrefaites lorsque les données sont soumises. A partir de la doc:

Protéger les actions du contrôleur de attaques CSRF en veillant à ce que toutes les formes viennent de l'application Web actuelle, pas un lien forgé à partir un autre site, se fait en intégrant un jeton basé sur une chaîne aléatoire stockée dans la session (laquelle un attaquant ne connaîtrait pas) sous toutes ses formes et Ajax demandes générées par Rails puis vérifier l'authenticité de ce jeton dans le contrôleur

Vous pouvez désactiver cela pour le long d'un paramètre donné appel Ajax, ou vous pouvez également envoyer le nom « authenticity_token » avec la valeur de <%= form_authenticity_token %>

Pour le désactiver (que je ne recommanderais PAS), vous pouvez faire l'une des ce qui suit:

class FooController < ApplicationController 
    protect_from_forgery :except => :update_order 

    # you can disable csrf protection on controller-by-controller basis: 
    skip_before_filter :verify_authenticity_token 
end 
1

Les assistants de forme normale Rails injecteront un jeton d'authenticité caché dans le formulaire. Lorsque vous lancez le vôtre, comme ce que vous faites probablement pour ce code Ajax, vous n'avez probablement pas ajouté le jeton.

This old post a quelques bons conseils qui peuvent vous aider, selon si vous vous souciez vraiment d'utiliser ce jeton, ou si vous voulez juste l'éteindre pour cette action.

Questions connexes