Как получить доступ к значению заголовка авторизации с помощью flask в python 2.7?

#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.