1

Railsバージョン

レール3.2.1

ゴール:

ActiveAdminログインページにアクセスするのはオフィスのコンピューターのみです。

コード:

route.rb

制約(:ip => /(^127.0.0.1$)|(^192.168.10.[0-9]*$)/)do

 match 'admin/' => 'admin#login'

終わり

それはうまくいきません、何か疑惑はありますか?

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

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

それは仕事です!

4

2 に答える 2

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

これは別の方法を使用して行うこともできると確信していますが、あなたがポイントを得ると確信しています。

于 2012-05-14T10:57:24.337 に答える
1

ルートに対して複雑すぎる場合は、ロジックをクラスに移動できるため、この方法を使用します。

このクラスは一致する必要がありますか?その上で定義されたメソッド。ユーザーにそのルートへのアクセスを許可する必要がある場合はtrueを返し、ユーザーに許可しない場合はfalseを返します。

正規表現なしで配列にipsを追加するのに役立ちます。

私はそれが誰かを助けることを願っています)

詳細-https ://api.rubyonrails.org/v5.2.2/classes/ActionDispatch/Routing/Mapper/Scoping.html#method-i-constraints

class WhitelistConstraint
  IPS = %w[
    143.132.200.43,
  ]

  def self.matches?(request)
    IPS.include?(request.remote_ip)
  end
end

Rails.application.routes.draw do

  constraints(WhitelistConstraint) do
    ActiveAdmin.routes(self)
    mount Sidekiq::Web => '/sidekiq'
  end
end
于 2019-03-15T12:12:04.593 に答える