为了设置一些上下文,我正在通过 Flask 创建一个 API。为了对用户进行身份验证,我使用
了 flask-HTTPAuth。作为访问登录受保护资源的一部分,我verify_password
在auth.py
. 如果提供的用户凭据评估为 True,则用户将附加到g
对象。
在app.py
中,有一条路线/api/v1/users/token
,当请求时,将向登录的用户发出令牌。但是,当我尝试访问g.user
时app.py
,我收到错误:AttributeError: '_AppCtxGlobals' object has no attribute 'user'
。
g
为什么在访问对象时没有任何现有的“用户”属性app.py
?
授权文件
from flask import g
from flask_http import HTTPBasicAuth
from models import User
basic_auth = HTTPBasicAuth()
@basic_auth.verify_password
def verify_password(username, password):
try:
api_user = User.get(User.username == username)
except User.DoesNotExist:
return False
user_verified = api_user.check_password(password)
if user_verified:
g.user = api_user
return True
return False
应用程序.py
from flask import Flask, g, jsonify
from auth import basic_auth as auth
app = Flask(__name__)
@auth.login_required
@app.route("/api/v1/users/token")
def issue_api_token():
token = g.user.request_token()
return jsonify({'token': token})