Rails设计验证IP地址

时间:2011-08-12 19:30:14

标签: ruby-on-rails ruby ruby-on-rails-3

我想在登录管理员控制器之前验证IP地址。

before_filter :validate_ip

我应该如何创建此IP验证?我只想写一下在控制器中有权访问的IP地址。

1 个答案:

答案 0 :(得分: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和路由的更多信息,请务必查看:Rails Dispatch - The Powerful New Rails Router