【发布时间】:2020-08-08 17:27:42
【问题描述】:
为了设置一些上下文,我通过 Flask 创建了一个 API。为了对用户进行身份验证,我正在使用
flask-HTTPAuth。作为访问登录保护资源的一部分,我在auth.py 中定义了我的verify_password 回调。如果提供的用户凭据评估为 True,则用户将附加到 g 对象。
在app.py 中,有路由/api/v1/users/token,当请求时,会向已登录的用户发出令牌。但是,当我尝试在app.py 中访问g.user 时,我收到错误消息:AttributeError: '_AppCtxGlobals' object has no attribute 'user'.
为什么在访问app.py 中的g 对象时没有任何现有的“用户”属性?
auth.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
app.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})
【问题讨论】:
标签: python flask flask-httpauth