rails限制多个IP访问的方法?

对某一个action的IP的限制方式是,在routes.rb中:

  constraints(:ip => Settings.ip.allow) do
     post '/somecontroller/callback', to: 'somecontroller#callback' , as: 'somecontroller_callback'
  end

在settings.yml中:

  ip:
    allow: '127.0.0.1'

这是可以的.

但是想对多个IP允许访问,在settings.yml中如下:

  ip:
    allow: '/127.0.0.1|127.0.0.2/'

却不行。哪里不对呢?

阅读 5.1k
1 个回答

因为 Settings.ip.allow 始终返回的是 String,但其实第二种情况下你需要的是一个 RegExp,所以无效。可以试着这么改:

config/routes.rb:

constraints(:ip => %r{#{Settings.ip.allow}}) do
 post '/somecontroller/callback', to: 'somecontroller#callback' , as: 'somecontroller_callback'
end

config/settings.rb

ip:
  allow: '127.0.0.1|127.0.0.2'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进