首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在用户登录前使用flask-jwt-extended检查用户是否已登录?

如何在用户登录前使用flask-jwt-extended检查用户是否已登录?
EN

Stack Overflow用户
提问于 2018-04-08 19:44:55
回答 3查看 2.2K关注 0票数 1

我正在使用flask-restful开发一个API。我要确保当用户登录时,除非他首先被注销,否则他不能再次登录。我正在使用flask-jwt-extended,我想知道是否有一种方法可以在尝试登录之前检查用户已经登录的位置。

EN

回答 3

Stack Overflow用户

发布于 2020-01-10 00:21:57

您可以尝试使用jwt_optional装饰器,但如果令牌过期或无效,则会出现错误:

代码语言:javascript
复制
@app.route('/hello')
@jwt_optional
def hello():
    user = get_gwt_identity()

或者只检查token是否有效并返回user。如果令牌无效,用户将为none:

代码语言:javascript
复制
from flask_jwt_extended import get_jwt_identity, verify_jwt_in_request_optional

def get_identity_if_logedin():
    try:
        verify_jwt_in_request_optional()
        return get_jwt_identity()
    except Exception:
        pass

@app.route('/hello')
def hello():
    user = get_identity_if_logedin()
    # check if user is loged in
    if user:
        # user var here has jwt_identity
票数 2
EN

Stack Overflow用户

发布于 2018-04-09 01:56:45

一种选择可能是在您的基本路由上使用jwt_optional装饰器,如果用户未登录,则返回登录页面的重定向:http://flask-jwt-extended.readthedocs.io/en/latest/optional_endpoints.html

如果后端只是一个API,一个更好的选择可能是在你的前端(在本地存储或任何你保存它的地方)查找访问令牌,并放入是否应该显示登录页面的逻辑。

票数 0
EN

Stack Overflow用户

发布于 2019-11-13 23:19:16

在受保护的端点中,这将返回正在访问此端点的JWT的标识。如果不存在JWT,则返回None

请参阅API reference

代码语言:javascript
复制
from flask_jwt_extended import jwt_required, jwt_optional, get_jwt_identity

if get_jwt_identity():
    pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49717463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档