2012-11-25 41 views
4

使用Ruby on Rails框架開發的Web應用程序是否有可能使用第三方安全工具攔截所有對它的調用?任何對此Web應用程序的調用都會轉到安全工具而不是Web應用程序本身,然後安全工具可以將其重定向到Web應用程序。使用WS-Security工具來保護由Ruby on Rails框架創建的Web應用程序

在響應方面類似,Web應用程序響應由安全工具之前截獲發送到客戶端(瀏覽器)

回答

0

可以使用befor_methods這樣做,如果我明白你想要做正確

什麼回調函數掛鉤到Active Record對象的生命週期中,允許您在更改對象狀態之前或之後觸發邏輯。這可以用來確保在調用destroy(通過覆蓋before_destroy)時刪除關聯對象和依賴對象,或者在對屬性進行驗證之前(通過覆蓋before_validation)來對屬性進行按摩。作爲發起回調的一個例子,考慮基本#保存呼喚新的紀錄:

(-) save 

(-) valid 

(1) before_validation 

(-) validate 

(2) after_validation 

(3) before_save 

(4) before_create 

(-) create 

(5) after_create 

(6) after_save 

(7) after_commit 

而且,after_rollback回調可以被配置爲發生回滾發出被觸發。查看ActiveRecord :: Transactions瞭解關於after_commit和after_rollback的更多細節。

此外,每觸摸一個對象觸發一次after_touch回調。

最後,爲finder找到並實例化的每個對象觸發一次after_find和after_initialize回調,同時在實例化新對象後觸發after_initialize。

總共有19回調,這給你巨大的力量作出反應,並在活動記錄生命週期的每個狀態做好準備。除了每個_create回調被相應的_update回調代替之外,調用現有記錄的Base#save的順序是相似的。

實例:

class CreditCard < ActiveRecord::Base 
    # Strip everything but digits, so the user can specify "555 234 34" or 
    # "5552-3434" and both will mean "55523434" 
    before_validation(on: :create) do 
    self.number = number.gsub(/[^0-9]/, "") if attribute_present?("number") 
    end 
end 

class Subscription < ActiveRecord::Base 
    before_create :record_signup 

    private 
    def record_signup 
     self.signed_up_on = Date.today 
    end 
end 

class Firm < ActiveRecord::Base 
    # Destroys the associated clients and people when the firm is destroyed 
    before_destroy { |record| Person.destroy_all "firm_id = #{record.id}" } 
    before_destroy { |record| Client.destroy_all "client_of = #{record.id}" } 
end 
相關問題