2009-07-24 2 views
150

Когда у меня есть конкретное действие, на которое я не хочу проверять токен аутентификации, как я могу сказать Rails пропустить проверку?Как игнорировать токен аутентификации для определенных действий в Rails?

+6

+1, к сожалению, вы не получили ответ на свой собственный вопрос, что совершенно законно. –

+15

э. Я поставил его здесь, потому что я искал все это и с трудом находил ответ - я думал, что это может помочь другим людям. Спасибо, что голосовали за меня. – edebill

ответ

201

Для индивидуальных действий, вы можете сделать:

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

Для всего контроллера, вы можете сделать:

skip_before_action :verify_authenticity_token 

И Rails 3.x требует:

skip_before_filter :verify_authenticity_token 
+0

thx для документирования этого – clyfe

+0

для конкретного контроллера и конкретных действий, используйте: skip_before_filter: verify_authenticity_token,: only =>: my_unprotected_action. Я пришел сюда, чтобы найти ответ: это ужасная идея? Я хочу сделать это, потому что ответ ajax ест мою сессию. – Danny

+29

Для рельсов 4 используйте 'skip_before_action: verify_authenticity_token', см. [API docs] (http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html) – amoebe

23

В Rails4 вы используете skip_before_action с except или 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 
Смежные вопросы