Come faccio a ignorare il token di autenticità per azioni specifiche in Rails?


168

Quando eseguo un'azione specifica per la quale non desidero controllare il token di autenticità, come faccio a dire a Rails di saltare il controllo?

Risposte:


230

In Rails 4:

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

E Rotaie 3:

skip_before_filter :verify_authenticity_token

Per le versioni precedenti:

Per le singole azioni, puoi fare:

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

Per un intero controller, puoi fare:

skip_before_action :verify_authenticity_token

per controller specifico e azione specifica, utilizzare: skip_before_filter: confirm_authenticity_token,: only =>: my_unprotected_action. Sono venuto qui per trovare la risposta a: è un'idea terribile? Sto cercando di farlo perché una risposta Ajax mangia la mia sessione.
Danny,

9
Per le guide 5.2, utilizzare skip_forgery_protection. Vedi i documenti API .
Aaron Breckenridge,

27

In Rails4 usi skip_before_actioncon excepto 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.