2010-09-10 9 views
6

J'ai deux applications qui doivent se parler via HTTP. L'une est une application PHP et l'autre est mon application principale, l'application Rails. J'ai besoin de l'application PHP pour parler à l'application Rails en lui envoyant des données, mais quand je le fais, je reçois l'erreur Invalid Authenticity Token. Y a-t-il de toute façon autour de ça? Ou comment pourrais-je créer mon propre jeton pour transmettre le POST afin que mon application Rails s'authentifie?Rails 3 problèmes de protect_from_forgery

Répondre

15

De l'documentation for ActionController::RequestForgeryProtection::ClassMethods

Vous pouvez ignorer l'exigence jeton d'authentification soit en spécifiant et: à l'exception ou en forçant le filtre avant d'être sautée .... Exemple de la documentation ...

class FooController < ApplicationController 
    protect_from_forgery :except => :index 

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

ne vaudrait-il pas mieux récupérer le jeton d'authenticité par une requête get séparée, puis l'utiliser pour publier le formulaire en utilisant PHP? La désactivation du jeton n'est-elle pas un problème de sécurité? – Alex

+0

Je suis d'accord, vous ne devriez pas désactiver la protection pour Index et POST. N'importe qui essayant de faire ceci devrait suivre la suggestion d'Alex ou au moins utiliser une action différente et placer une autre sorte de sécurité comme accepter des demandes venant seulement d'une adresse IP connue, en utilisant request.remote_ip pour éliminer les IP non désirées. – martincho