2017-06-08 9 views
3

私はFlask-JWTトークンをユーザ認証用に生成しましたが、ログアウト時にトークンを無効にしたいと思います。これで、ログアウト後にルートにアクセスできるようになりました。ログアウト時にフラスコJWTを無効にする

@app.route('/logout', methods=['POST']) 
@jwt_required 
def logout(): 
    user = current_user 
    user.authenticated = False 
    db.session.commit() 
    logout_user() 
    return jsonify({'success': True}) 

答えて

1

すでにブラックリストに記載されているように、JWTトークンを無効にする基本的な方法の1つです。ただし、ブラックリストに記載されたトークンは、何らかの理由ですべてのトークンを保持する必要がない限り、有効期限までDBまたは他の場所に保管する必要があります。

また、JWTトークンの有効期限をできるだけ短くして、大部分のケースではflask-jwt自体によって迅速に無効にされるようにすることが重要です。たとえば、トークンの有効期限を設定するのは意味があるかもしれません.30分(一部のWebサイトではセッションのタイムアウトなど)は間違いありません。

+0

ログアウトルートに新しいトークンを生成するとどうなりますか? –

+0

@MayurPatil古いトークンを無効にするには? – Nurjan

+0

@MayurPatil理論的には、クライアントは手動で要求に入れて問題なく使用できる古いトークンを保持できます。したがって、それらをブラックリストに載せて、有効期限をできるだけ短くする方が良いです。 – Nurjan

2

JWTトークンシステムを使用すると、無効にしたいkey.Ifあなたは非共有(秘密)で署名されたユーザアイデンティティ(または関連する)データと生成されたトークン自体にトークン有効期限のparamを置くように動作します&ビュー/ルートをチェックするか、クライアントからトークンを削除して、クライアントがトークンを再生成する必要があるようにします。

注:ブラックリスト方式を使用したくない場合は、生成されたトークンがDB /その他のストレージソリューションに保存されているHawkのような他のトークン生成スキームを使用してください。&無効化/ログアウトすると削除されます。

関連する問題