2009-07-24 9 views
150

Wenn ich eine bestimmte Aktion habe, mit der ich das Authentifizierungs-Token nicht überprüfen möchte, wie kann ich Rails mitteilen, es nicht zu überprüfen?Wie ignoriere ich das Authentizitätstoken für bestimmte Aktionen in Rails?

+6

+1, leider wurden Sie für die Beantwortung Ihrer eigenen Frage abgelehnt, was absolut legitim ist. –

+15

eh. Ich habe es hier hingelegt, weil ich überall danach gesucht habe und es schwer hatte, eine Antwort zu finden - ich dachte, es könnte anderen Leuten helfen. Danke, dass Sie mich wieder gewählt haben. – edebill

Antwort

201

Für einzelne Aktionen können Sie tun:

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

Für einen ganzen Controller können Sie tun:

skip_before_action :verify_authenticity_token 

Und Rails 3.x erfordern:

skip_before_filter :verify_authenticity_token 
+0

thx für die Dokumentation dieser – clyfe

+0

für spezifische Controller und spezifische Aktion, verwenden Sie: skip_before_filter: verify_authenticity_token,: only =>: my_unprotected_action. Ich kam hierher, um die Antwort zu finden: Ist das eine schreckliche Idee? Ich möchte dies tun, weil eine Ajax-Reaktion meine Sitzung isst. – Danny

+29

Für Schienen 4 verwenden Sie 'skip_before_action: verify_authenticity_token', siehe [API-Dokumente] (http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html) – amoebe

23

In Rails4 verwenden Sie skip_before_action mit except oder 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 
Verwandte Themen