1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails × Devise × Basic認証】初心者エンジニアが管理画面のセキュリティと使いやすさを考えてみた話

Posted at

【Rails × Devise × Basic認証】管理画面のセキュリティと使いやすさを両立した話

こんにちは、miyoshiです。
モニター開発も順調に進んでおります。
今回は、途中経過のところで、実装できた部分をご紹介します。

この記事も、前回公開した記事の続編です。

🎯 この記事の対象

  • Rails初心者でDeviseを使ってユーザー認証を導入している方
  • 管理者用画面のセキュリティ強化を検討している方
  • 実際の利用者を意識したUI設計に関心がある方

今回実装したこと(ISSUE#2)

  • Basic認証の追加し、管理者画面に入る。
  • 管理者と一般ユーザーとの区別する条件分岐。
  • 管理者がログインした時のみ、リンクが表示する分岐。
  • .envを活用した環境変数管理(dotenv-rails)

🔐 Devise + Basic認証で管理画面を二重に守る

ISSUE1で実装したDeviseに、管理画面にアクセス制限をもう一段階設けるため、Basic認証も導入しました。

Basic認証とは?

Basic認証はページにアクセスする際にIDとパスワードを聞いてくる仕組みです。

  • とても簡単に導入できる
  • Railsのコード(コンローラー)に記述することでOK!!
class ApplicationController < ActionController::Base
  before_action :basic_auth, if: :admin_namespace?

  private

  def basic_auth
    authenticate_or_request_with_http_basic do |user, pass|
      user == ENV['BASIC_AUTH_USER'] && pass == ENV['BASIC_AUTH_PASSWORD']
    end
  end

  def admin_namespace?
    self.class.name.split("::").first == "Admin"
  end
end

その後、.env ファイル(dotenv-rails使用)に設定してします。

BASIC_AUTH_USER=🟡🟡🟡
BASIC_AUTH_PASSWORD=🟢🟢🟢

👤 管理者だけに「管理画面ログイン」リンクを表示する工夫

操作しやすくするために、ログイン後の画面に「管理画面ログイン」リンクを条件分岐で表示するようにしました。

<% if current_user.admin? %>
  <%= link_to '管理画面ログイン', admin_root_path %>
<% end %>
  • モニター目線で使ってもらいやすいを意識しました。

🙌 まとめ

この工夫で、セキュリティとUX(使いやすさ)のバランスを取りながら管理画面を運用できるかなと思いました。

👤 プロフィール

駆け出しエンジニア。Railsを中心にポートフォリオ開発中。
「困ったら調べて深めて、、学んだことをQiitaに残す」が最近のモットーです!

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?