ブログBLOG

\ Web・ゲーム開発に関する情報を発信中 /

【Django】DjangoプロジェクトにBasic認証を設定する方法

Django
django , python
20230318_django-basic-setting-tmb

ご覧いただきありがとうございます!
領護(りょうご)です。

この記事では、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ファイルを作成

.env
WSGI_AUTH_CREDENTIALS=user:password

.envファイルに上記の内容を書き込みます。
userとpasswordには、お好きな「ユーザー名」と「パスワード」を入力します。

注意!

project/settings.pyに直接書くと動作しません!


project/wsgi.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プロジェクトを起動

20230318_django-basic-setting-01

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認証を設定する方法を解説しました!
クライアント先にだけページを公開してレビューをもらいたい、本番環境で正しく動作しているか非公開で確認したい時に役立つと思います!
是非活用してみてください!


\ よかったらシェアしてね /

関連記事