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?

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.