Bagaimana cara saya mengabaikan token keaslian untuk tindakan tertentu di Rails?

168

Ketika saya memiliki tindakan tertentu yang saya tidak ingin memeriksa token keasliannya, bagaimana cara saya memberi tahu Rails untuk tidak memeriksanya?

edebill
sumber

Jawaban:

230

Dalam Rails 4:

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

Dan Rel 3:

skip_before_filter :verify_authenticity_token

Untuk versi sebelumnya:

Untuk tindakan individu, Anda dapat melakukan:

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

Untuk seluruh pengontrol, Anda dapat melakukan:

skip_before_action :verify_authenticity_token
edebill
sumber
untuk kontroler tertentu dan tindakan spesifik, gunakan: skip_before_filter: memverifikasi_authenticity_token,: only =>: my_unprotected_action. Saya datang ke sini untuk menemukan jawabannya: apakah ini ide yang buruk? Saya ingin melakukan ini karena respons ajax memakan sesi saya.
Danny
9
Untuk rel 5.2, gunakan skip_forgery_protection. Lihat dokumentasi API .
Aaron Breckenridge
27

Di Rails4 Anda gunakan skip_before_actiondengan exceptatau 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
Epigene
sumber