2011-07-01 4 views
0

私のRailsコントローラの1つで特定のメソッドが呼び出されたとき、そのユーザのIPアドレスが信頼できるリストにあるかどうかチェックしたいのですが、そうであればrequest.forgery_whitelistedをオーバーライドしますか? CSRF保護が強制されないように真となるようにする。request.forgery_whitelistedを上書きしていますか?

私が読んだブログ記事は、コントローラのアクションで次のように宣言するとこれを達成することができますが、それでもCSRF保護エラーが発生することが示唆されています。

if request.remote_ip = "127.0.0.1" 
def request.forgery_whitelisted?; true; end 
end 

これを有効にするには早めにメソッドをオーバーライドするために、これが必要な部分がありますか?

答えて

1

次のいずれかが動作するはずです:

  • あなたのApplicationControllerに内のメソッド 'verify_authenticity_token' オーバーライド/モンキーパッチ:

def verify_authenticity_token 
    super unless request.remote_ip = '127.0.0.1' # TODO: replace this with actual white-listing logic 
end 
  • 猿パッチ 'forgery_whitelisted?'方法:

module ActionDispatch 
    class Request 
    def forgery_whitelisted? 
     super if remote_ip == '127.0.0.1' # TODO: replace this with actual white-listing logic 
    end 
    end 
end 
関連する問題