Làm cách nào để bỏ qua mã thông báo xác thực cho các hành động cụ thể trong Rails?


168

Khi tôi có một hành động cụ thể mà tôi không muốn kiểm tra mã thông báo xác thực trên, làm thế nào để tôi nói với Rails bỏ qua việc kiểm tra nó?

Câu trả lời:


230

Trong Rails 4:

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

Và Rails 3:

skip_before_filter :verify_authenticity_token

Đối với các phiên bản trước:

Đối với hành động cá nhân, bạn có thể làm:

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

Đối với toàn bộ bộ điều khiển, bạn có thể làm:

skip_before_action :verify_authenticity_token

đối với bộ điều khiển cụ thể và hành động cụ thể, hãy sử dụng: Skip_b Before_filter: verify_authenticity_token ,: only =>: my_unprotected_action. Tôi đến đây để tìm câu trả lời: đây có phải là một ý tưởng tồi tệ không? Tôi đang tìm cách để làm điều này bởi vì một phản ứng ajax ăn phiên của tôi.
Danny

9
Đối với đường ray 5.2, sử dụng skip_forgery_protection. Xem tài liệu API .
Aaron Breckenridge

27

Trong Rails4 bạn sử dụng skip_before_actionvới excepthoặc 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.