如何在烧瓶中的@ app.before_request中放置身份验证功能

时间:2019-10-25 09:23:19

标签: python python-3.x flask flask-jwt-extended flask-jwt

我想在flask应用程序中创建身份验证层。我正在为jwt auth使用flask-jwt-extended,因此我必须为每个受保护的路由提到@jwt_requied装饰器。所以我不想为每个受保护的路线都这样做。我想定义一个函数,并通过使用@ app.before_request使它在每个请求之前执行。我希望身份验证发生在这一层。


def check_user_token():
    if 'x-access-token' in request.headers:
        token = request.headers['x-access-token']
    if not token:
        return jsonify({'message': 'Token is missing'}), 401

    try:
        data = jwt.decode(token, app.config['SECRET_KEY'])
        current_user = UserDetails.query.filter_by(username=data['username']).first()


    except:
        return jsonify({'message': 'Token is in-valid'}), 401
return current_user

所以我想在每次请求验证身份之前调用此函数。

@app.before_request
def before_calback():
    #want to call that check_user_token() from here and 
   #also dont want to call that for 'login' route .
   #Once i will get some response from check_user_token() 
   #based on that want to proceed further
  #and  here i dont know to do this.

基本上我的qns是如何在@ app.before_request def before_calback()中进行身份验证?

1 个答案:

答案 0 :(得分:0)

您可以访问check_user_token()吗?

就是这样

@app.before_request
def before_calback():
    check_user_token()

如果您可以发布一些代码,则可以为您提供帮助。