如何通过 ip 限制访问 ActiveAdmin 登录页面?

joe*_*ang 1 ruby-on-rails-3 activeadmin

导轨版本

导轨 3.2.1

目标:

仅访问办公室计算机的 ActiveAdmin 登录页面。

代码:

路由文件

约束(:ip => /(^127.0.0.1$)|(^192.168.10.[0-9]*$)/) 做

 match 'admin/' => 'admin#login'
Run Code Online (Sandbox Code Playgroud)

结尾

这是行不通的,有什么问题吗?

==========================

我编辑我的 route.rb 跟随代码

  constraints(:ip => /(^127.0.0.1$)|(^192.168.10.[0-9]*$)/) do
    ActiveAdmin.routes(self)
  end
  devise_for :admin_users, ActiveAdmin::Devise.config
Run Code Online (Sandbox Code Playgroud)

这是工作!

flo*_*ooo 5

请参阅 Rails 指南章节路由(http://guides.rubyonrails.org/routing.html#advanced-constraints):

class WhitelistConstraint
  def initialize
    @ips = Whitelist.retrieve_ips
  end
 
  def matches?(request)
    @ips.include?(request.remote_ip)
  end
end
 
TwitterClone::Application.routes.draw do
  match 'admin/' => 'admin#login',
    :constraints => WhitelistConstraint.new
end
Run Code Online (Sandbox Code Playgroud)

我相信这也可以使用另一种方式来完成,但我相信你明白这一点。