Il s'agit d'une question en deux parties. Je dois limiter un site de rails que je lance sur le serveur de développement à seulement quelques adresses IP, donc le public ne peut pas y accéder. (L'authentification HTTP de base ne fonctionne pas «entièrement» car l'autorisation casse un uploader Flash dans le projet.)Rails 3 - Liste blanche des adresses IP via les routes
D'après ce que j'ai googlé, c'est ce que j'ai trouvé dans mon fichier de routes.
class WhitelistConstraint
def initialize
@ips = '127.0.0.1'
end
def matches?(request)
@ips.include?(request.remote_ip)
end
end
MyProject::Application.routes.draw do
constraints WhitelistConstraint.new do
# all my routing stuff here
end
end
Fonctionne plutôt bien. Cependant, j'ai besoin de le modifier pour travailler avec plusieurs adresses IP. J'ai essayé d'utiliser un tableau sur @ips, ainsi que de boucler chaque boucle, mais aucun n'a fonctionné. En plus de cela, la deuxième partie de ma question ... Je pourrais avoir besoin de vérifier seulement par rapport à un segment de l'IP, comme '127.0.0'. Comment ferais-je cela?
Je n Je ne sais pas non plus. Cependant, cette solution a fonctionné tout de suite pour moi et probablement la meilleure route à suivre. Il pourrait y avoir un problème sur le passage du développement à la production (qui est temporairement le serveur de transfert), mais c'est seulement temporaire et je peux juste ajouter les adresses IP sur les deux environnements si nécessaire. Merci. – Shannon
Vous pouvez utiliser 'Rails.env.production?' Et 'Rails.env.development?' Pour vérifier l'environnement dans une sorte de construction 'if' en fonction de ce que vous devez faire. Bonne chance :) –
Est-ce que cette solution fonctionnerait pour les plages IP? – DanielCW