2011-08-12 4 views
2

Adminコントローラにログインする前にIPアドレスを検証します。RailsがIPアドレスを検証することを了解します

before_filter :validate_ip 

このIP検証はどのようにして作成しますか?私はちょうどコントローラにアクセスできるIPアドレスを書きたいと思う。あなたは、ランタイムで配列を埋めることができるので

答えて

0

最初のソリューションは、動的である:

def validate_ip 
    valid = %w[127.0.0.1 10.0.0.1] 
    redirect_to(login_path) unless valid.include?(request.remote_ip) 
end 

IPアドレスを制限する他の方法は、あなたのroutes.rbに制約を使用して、次のとおりです。

get '/admin' => 'admin#super_secure_action', :constraints => { :ip => %w[127.0.0.1 10.0.0.1] } 

# or 

constraints(:ip => %w[127.0.0.1 10.0.0.1]) do 
    # Every route defined in here will be restricted. 
    get '/admin' => 'admin#super_secure_action' 
end 

レールとルートの詳細については、Rails Dispatch - The Powerful New Rails Routerを確認してください。

+0

どの程度安全ですか?より良いバリデーションはありますか? –

+0

私はIPフィルタリングだけに依存しないので、間違いなくパスワード認証を使用する必要があります。両方のシステムの組み合わせは安全でなければなりません。 –

+0

Btwが別の解決策を追加しました! –

関連する問題