2011-08-12 4 views
2

Je veux valider une adresse IP avant de me connecter dans mon contrôleur d'administration.Rails concevoir valider adresse IP

before_filter :validate_ip 

Comment créer cette validation IP? Je veux juste écrire les adresses IP qui ont accès dans le contrôleur.

Répondre

0

La première solution est dynamique, parce que vous pouvez remplir le tableau dans l'exécution:

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

L'autre façon de restreindre les adresses IP est, d'utiliser des contraintes dans votre 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 

Pour plus d'informations sur Rails and Routes, n'oubliez pas de consulter: Rails Dispatch - The Powerful New Rails Router.

+0

À quel point est-ce sécurisé? Y a-t-il une meilleure validation? –

+0

Je ne compterais pas seulement sur le filtrage IP, vous devriez certainement utiliser l'authentification par mot de passe. La combinaison des deux systèmes devrait être sécurisée. –

+0

Btw a ajouté une autre solution! –