Чтобы установить контекст, я создаю API через Flask. Для аутентификации пользователей я использую 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'
.
Почему не существует какого-либо существующего атрибута 'user' во время доступа к g
объект в app.py
?
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})