#python #flask #basic-authentication
Вопрос:
Я пытаюсь получить доступ к значению авторизации при вызове конечной точки. Во-первых, я добавляю следующий аргумент, который отображается в Swagger в виде поля.
parser.add_argument('Authorization', type=str, required=True,
help='A base-64 string in format "Basic username:password"', location='headers')
Ресурс определяется следующим образом:
from flask import request
parser.add_argument('Authorization', type=str, required=True,
help='A base-64 string in format "Basic username:password"', location='headers')
@api.route("/authentication/")
@api.expect(parser)
class TestResource(Resource):
@api.marshal_with(set_test_model)
def post(self):
val = request.authorization['username']
if val is None:
abort(400, 'Username is none')
К сожалению, я получаю сообщение об ошибке:
val= request.authorization["username"]
TypeError: 'NoneType' object has no attribute '__getitem__'
Наблюдение за трафиком с помощью Fiddler показывает мне, что в вызове есть заголовок авторизации.
Это говорит мне о следующем:
AUTHORIZATION Header is present: Basic dGVzdDp0ZXN0
Decoded Username:Password= test:test
Несмотря на то, что Скрипач распознает заголовок, я, похоже, не могу уловить его в python.
Также заголовки request.не содержат ключа «Авторизация». Кто-нибудь знает, как я получаю значение авторизации с помощью flask?
Ответ №1:
Проблема в том, что мы работаем на более старой версии сервера apache, которая не поддерживает заголовок безопасности авторизации. Вот почему я никогда не получаю никакого заголовка авторизации в python.