Rails CSRF安全性功能以及取消form验证

預設產生出來的Controller都繼承自ApplicationController。因此定義在這裡的方法可以被所有Controller取用,你可以在這邊定義一些共用的方法。預設的application_controller.rb長的如下:

class ApplicationController < ActionController::Base

protect_from_forgery

end

其中的protect_from_forgery方法啟動了CSRF安全性功能,所有非GETHTTP request都必須帶有一個Token參數才能存取,Rails會自動在所有表單中幫你插入Token參數,預設的Layout中也有一行<%= csrf_meta_tag %>標籤可以讓JavaScript讀取到這個Token。會需要關閉這個功能的時機是,你需要開放API給非瀏覽器客戶端,這時候你會需要取消它:

class ApisController < ApplicationController 

    skip_before_filter :verify_authenticity_token 

end