【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に残す」が最近のモットーです!