39
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails】IPアドレスでアクセス制限

Last updated at Posted at 2019-01-04

概要

RailsアプリでIPアドレスを元にアクセス制限をかける方法を紹介します。

方法

ステップ1(メソッドを定義)

制限をかけたいコントロール上のprivateメソッドとして以下の様なメソッドを定義します。
今回は例としてアプリ全体にアクセス制限をかける為にApplicationControllerにメソッドを定義していきます。

controllers/application_controller.rb
class ApplicationController < ActionController::Base

  private
  # 配列内にアクセスを許可するIPアドレスを羅列する。
  def whitelisted?(ip)
    return true if [123.43.65.1, 123.43.65.77].include?(ip)
    false
  end

  # whiltelisted?で許可したIPアドレス以外のアクセスがあれば制限をかける(この場合はgoogle.comに飛ばしている。)
  def block_foreign_hosts
    return false if whitelisted?(request.remote_ip)
    redirect_to "https://www.google.com" unless request.remote_ip.start_with?("123.456.789")
  end
end

ステップ2(before_filter)

次に before_filterを使用して、実際に制限をかけます。

controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_filter :block_foreign_hosts
#### メソッド部省略
end

メソッドの中身に関しては改善が見込めそうですが、上記の流れでRailsアプリでIPアドレスを元にアクセス制限をかけることが可能です。

参考

Restricting Access to Rails App based on IP-Address

39
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?