Wie ignoriere ich das Authentizitätstoken für bestimmte Aktionen in Rails?

168

Wie kann ich Rails anweisen, die Überprüfung zu überspringen, wenn ich eine bestimmte Aktion habe, für die ich das Authentizitätstoken nicht überprüfen möchte?

edebill
quelle

Antworten:

230

In Schienen 4:

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

Und Schienen 3:

skip_before_filter :verify_authenticity_token

Für frühere Versionen:

Für einzelne Aktionen können Sie Folgendes tun:

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

Für einen gesamten Controller können Sie Folgendes tun:

skip_before_action :verify_authenticity_token
edebill
quelle
Verwenden Sie für einen bestimmten Controller und eine bestimmte Aktion: skip_before_filter: verify_authenticity_token ,: only =>: my_unprotected_action. Ich bin hierher gekommen, um die Antwort zu finden: Ist das eine schreckliche Idee? Ich möchte dies tun, weil eine Ajax-Antwort meine Sitzung verschlingt.
Danny
9
Verwenden Sie für Schienen 5.2 skip_forgery_protection. Siehe API-Dokumente .
Aaron Breckenridge
27

In Rails4 verwenden Sie skip_before_actionmit exceptoder 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
Epigen
quelle