一度Dokcerizeしてあるプロジェクト前提になってます。
前回:Docker + Python + Flaskでアプリケーション開発
ファイル構成
├── api
| └── auth.api
├── requirements.txt
└── docker-compose.yaml
Basic認証機能の追加
auth.py
from flask_httpauth import HTTPBasicAuth
from werkzeug.security import generate_password_hash, check_password_hash
import os
auth = HTTPBasicAuth()
users = {
os.getenv("BASIC_AUTH_USER"): generate_password_hash(os.getenv("BASIC_AUTH_PASSWORD"))
}
@auth.verify_password
def verify_password(username, password):
if username in users:
return check_password_hash(users.get(username), password)
return False
from api.auth import auth
# 省略
@route('/')
@auth.login_required
def add():
# 省略
basic認証が必要なルーティングに@auth.login_required
を追加します。
dockerの修正
docker-compose.yaml
version: '3'
services:
api:
container_name: tool-api
# 省略
environment:
BASIC_AUTH_USER: "user"
BASIC_AUTH_PASSWORD: "password"
auth.py
で使うアイパスを環境変数に設定します。
requirements.txt
# 省略
flask_httpauth
必要なモジュールを追加します。
実行
$ docker-compose up