ご覧いただきありがとうございます!
領護(りょうご)です。
この記事では、DjangoプロジェクトにBasic認証を設定する方法を解説します。
実行環境
Python・・・3.10.9
Django・・・4.1.7
wsgi-basic-auth・・・1.1.0
Basic認証とは
Basic認証とは、簡単に言うとWEBページにユーザー名とパスワードを設けて簡易的な閲覧制限ができる機能です。
本番環境にアップして、正しく動作しているか特定の人にだけ公開して確認したい時に役立ちます!
wsgi-basic-authをインストール
それでは早速、Basic認証機能を実装していきましょう。
Djangoプロジェクトに「wsgi-basic-auth」pipライブラリをインストールします。
pip install wsgi-basic-auth
pipコマンドでインストール
wsgi-basic-auth==1.1.0
requirements.txtに追加
pip show wsgi-basic-auth
正しくインストールされているか確認
Name: wsgi-basic-auth
Version: 1.1.0
Summary: Simple wsgi middleware to provide basic http auth
Home-page: https://github.com/mvantellingen/wsgi-basic-auth
Author: Michael van Tellingen
Author-email: michaelvantellingen@gmail.com
License: MIT
Location: /usr/local/lib/python3.10/site-packages
Requires: webob
Required-by:
上記の内容が表示されればインストール完了
DjangoプロジェクトにBasic認証を実装
Basic認証用のユーザー名とパスワードを設定するので、Djangoプロジェクト直下に「.env」ファイルを作成します。
sudo nano .env
.envファイルを作成
WSGI_AUTH_CREDENTIALS=user:password
.envファイルに上記の内容を書き込みます。
userとpasswordには、お好きな「ユーザー名」と「パスワード」を入力します。
注意!
project/settings.pyに直接書くと動作しません!
import os
from wsgi_basic_auth import BasicAuth
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '[プロジェクト名].settings')
# Basic認証を設定
application = BasicAuth(get_wsgi_application())
project/wsgi.pyを上記の内容に編集します。
[プロジェクト名]には、ご自身のDjangoプロジェクト名が入ります。
Djangoプロジェクトを起動
以上でDjangoプロジェクトにBasic認証の設定が完了しました。
実際に起動して確かめてみましょう。
python manage.py runserver
Djangoプロジェクトを起動
http://127.0.0.1/にアクセスしてBasic認証のポップアップが表示されたら実装完了です!
Apache環境で使用する場合
Apacheを使ってBasic認証を設定する場合はconfファイルを少し編集します。
# Ubuntu
#:/etc/apache2/sites-available/[confファイル名].conf
WSGIPassAuthorization On # 追加
Apacheのconfファイルに「WSGIPassAuthorization On」を追加します。
[confファイル名]には、ご自身で作成したconfファイル名が入ります。
最後に
以上でDjangoプロジェクトにBasic認証を設定する方法を解説しました!
クライアント先にだけページを公開してレビューをもらいたい、本番環境で正しく動作しているか非公開で確認したい時に役立つと思います!
是非活用してみてください!