Comment ignorer le jeton d'authenticité pour des actions spécifiques dans Rails?

168

Lorsque j'ai une action spécifique sur laquelle je ne souhaite pas vérifier le jeton d'authenticité, comment dire à Rails de ne pas la vérifier?

edebill
la source

Réponses:

231

Dans Rails 4:

skip_before_action :verify_authenticity_token, except: [:create, :update, :destroy]

Et Rails 3:

skip_before_filter :verify_authenticity_token

Pour les versions précédentes:

Pour les actions individuelles, vous pouvez faire:

protect_from_forgery :only => [:update, :destroy, :create]
#or
protect_from_forgery :except => [:update, :destroy, :create]

Pour un contrôleur entier, vous pouvez faire:

skip_before_action :verify_authenticity_token
edebill
la source
pour un contrôleur spécifique et une action spécifique, utilisez: skip_before_filter: verify_authenticity_token,: only =>: my_unprotected_action. Je suis venu ici pour trouver la réponse: est-ce une mauvaise idée? Je cherche à faire cela parce qu'une réponse ajax mange ma session.
Danny
9
Pour les rails 5.2, utilisez skip_forgery_protection. Consultez la documentation de l'API .
Aaron Breckenridge
27

Dans Rails4, vous utilisez skip_before_actionavec exceptou only.

class UsersController < ApplicationController
  skip_before_action :verify_authenticity_token, only: [:create]
  skip_before_action :some_custom_action, except: [:new]

  def new
    # code
  end

  def create
    # code
  end

  protected
  def some_custom_action
    # code
  end
end
Épigène
la source