Désactiver le jeton CSRF dans les rails 3

105

J'ai une application de rails qui sert certaines API à une application iPhone. Je veux pouvoir simplement publier sur une ressource sans me soucier d'obtenir le bon jeton CSRF. J'ai essayé certaines méthodes que je vois ici dans stackoverflow mais il semble qu'elles ne fonctionnent plus sur les rails 3.

Merci de m'aider.

Simone D'Amico
la source

Réponses:

175

Dans le contrôleur où vous souhaitez désactiver CSRF, le contrôle:

skip_before_action :verify_authenticity_token

Ou pour le désactiver pour tout sauf pour quelques méthodes:

skip_before_action :verify_authenticity_token, :except => [:update, :create]

Ou pour désactiver uniquement les méthodes spécifiées:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

Plus d'informations: RoR Request Forgery Protection

Mike Lewis
la source
1
C'est la bonne réponse pour les applications qui ont un mélange de formulaires normaux accessibles par navigateur et de points de terminaison d'API. La réponse de Markus Proske serait correcte si vous étiez absolument sûr de ne pas avoir de formulaires accessibles par navigateur dans votre application.
Asfand Qazi
Où cela va-t-il exactement? Et si le contrôleur faisait partie d'un bijou?
Compte à jeter le
Puis-je vous demander si vous pouvez répondre à cette question très similaire? stackoverflow.com/questions/50159847/…
105

Dans Rails3, vous pouvez désactiver le jeton csrf dans votre contrôleur pour des méthodes particulières:

protect_from_forgery :except => :create 
Markus Proske
la source
12
Pour tous ceux qui lisent, notez que c'est ce qui devrait entrer ApplicationController. La réponse de Mike Lewis ci-dessous ( skip_before_filter :verify_authenticity_token) est de savoir comment le désactiver par contrôleur, en supposant que le contrôleur hérite de ApplicationController.
NudeCanalTroll
Semble que ce n'est pas sûr stackoverflow.com/questions/10676018/… . Qu'est-ce que tu penses? c'est ça?
sites
@NudeCanalTroll vous voulez dire mettre ça dans le contrôleur là où je veux que ça ne marche pas?
BlackDivine
Puis-je vous demander si vous pouvez répondre à cette question très similaire? stackoverflow.com/questions/50159847/…
32

Avec Rails 4, vous avez désormais la possibilité d'écrire au skip_before_actionlieu de skip_before_filter.

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

ou

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token
jason328
la source
1
Quelle est la différence?
Adam D. Ruppe
Puis-je vous demander si vous pouvez répondre à cette question très similaire? stackoverflow.com/questions/50159847/…
John Sam, quand j'aurai le temps, j'essaierai de m'y mettre.
jason328