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?

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.