😽
Flaskでの簡単な認証
簡単なものならflask_httpauthが使いやすい。
@{auth}.login_required()
とつけると認証がかかる。
トークン認証の場合はverify_token()
という関数を定義する必要がある。
ロールを設定した場合はさらにget_user_roles()
という関数を定義する必要がある。
from flask import Flask
from flask_httpauth import HTTPTokenAuth
app = Flask(__name__)
auth = HTTPTokenAuth(scheme='Bearer')
@app.route('/users', methods=['GET'])
@auth.login_required(role=['admin'])
def get_users():
''' verify_token()がFalse以外の場合は先へ進む
get_user_roles()の戻り値listに'admin'が含まれていれば先へ進む
それ以外は401 Unauthorizedが返る
'''
users = ...
return dumps(users)
@auth.verify_token
def verify_token(token):
''' トークンが正しければFalse以外の値, それ以外はFalseを返す関数を実装する '''
tokens = [...]
if token in tokens:
return True
return False
@auth.get_user_roles
def get_user_roles(user_id):
''' user_idからrolesを返す関数を実装する
以下は実装の例
'''
user = db.users.find_one({'id':user_id})
return user['roles']
# rolesは['admin','customer']のような、rolesの値を含んだlist
Discussion