FlaskでBasic認証つけて、簡易的な管理ページを作ってみました。
flask-httpauthをインストール
$ pip install flask-httpauth
app.pyを編集
from flask import Flask
from flask_httpauth import HTTPBasicAuth
app = Flask(__name__)
auth = HTTPBasicAuth()
users = {
"user_name": "password123",
}
@auth.get_password
def get_pw(username):
if username in users:
return users.get(username)
return None
@app.route('/')
@auth.login_required
def index():
return "Hello, World"
if __name__ == '__main__':
app.run()
これでbasic認証が現れるようになります。あっという間!!
AWS ElasticBeansTalksにデプロイするときには要注意!
これだけでEBにデプロイすると、Basic認証画面ポップは出てきますが、正しいユーザー名、パスワードを入力しても正常に通りません。 .ebextentions
ディレクトリをapp.pyと同じディレクトリに作成して、その下に auth.config
を作成してあげましょう。
auth.config
container_commands:
01_wsgi_pass_headers:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
この状態で、デプロイするとBasic認証が正常に動くようになります。