Flask-RESTful サービスをセットアップしており、ユーザー認証が機能しています。私が使用している方法は次のとおりです。
def generate_auth_token(username, expiration=600):
gen_serial = Serializer(secret_key, expires_in=expiration)
return gen_serial.dumps({'username': username})
次のようにトークンをユーザーに渡します。
class token(Resource):
decorators = [auth.login_required]
def post(self):
username = g.user
return_token = generate_auth_token(username)
return {'token':return_token.decode()}, 200
そして、トークンはそのまま検証されるため、サーバー側に保存する必要はありません。
def verify_auth_token(auth_token):
serial = Serializer(secret_key)
try:
data = serial.loads(auth_token)
except SignatureExpired:
return None
except BadSignature:
return None
serial_user = data['username']
return serial_user
これはうまくいくようですが、サーバー側にトークンを保存せずに有効期限が切れる前にユーザーをログアウトする方法がわかりません。ユーザーがログアウトすることを選択したときにガベージトークンを返すことを考えましたが、これはエレガントまたは安全なソリューションではないと思います。
どんなヒントも本当に役に立ちます!