Python: Flask На домашней странице JWT нет ответа json - PullRequest
0 голосов
/ 21 февраля 2020

Я работаю с токенами и, в основном, когда я использую их на почтальоне, все работает нормально, я получаю хорошие ответы. Итак, теперь у меня есть 2 страницы: 1 защищенная, 2 незащищенная, для которой не требуется токен. Для получения токена вам необходимо успешно авторизоваться. Если я пытаюсь получить доступ к защищенной странице без авторизации, я получаю JSON ответ в сети, что токен отсутствует, но после авторизации он не показывает никаких ответов. Кроме того, я думал, что это может быть проблема с куки, в заголовках почтальона у меня есть заголовок токена, который работает, когда я делаю запрос, но я думаю, тогда я должен получить JSON ответ, что токен отсутствует

В моем редакторе я вижу, что когда я делаю запрос в Интернете, я получаю - "GET / protected HTTP / 1.1" 401 -

при работе с почтальоном - "GET / protected HTTP / 1.1 "200 -

Мой код:

def token_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        token = None

        if 'x-access-token' in request.headers:
            token = request.headers['x-access-token']

        if not token:
            return jsonify({'message': 'Token is missing'}), 401

        try:
            data = jwt.decode(token, app.config['SECRET_KEY'])
            current_user = User.query.filter_by(public_id=data['public_id']).first()
        except jwt.DecodeError:
            return jsonify({'message': 'Token is missing'}), 401

        except jwt.exceptions.ExpiredSignatureError:
            return jsonify({'message': 'Token has expired'}), 401

        return f(current_user, *args, **kwargs)
    return decorated

@app.route('/login')
def login():
    auth = request.authorization

    if not auth or not auth.username or not auth.password:
        return make_response('Could not verify', 401, {'WWW-Authenticate': 'Basic realm="Login required!"'})

    user = User.query.filter_by(username=auth.username).first()

    if not user:
        return make_response('Could not verify', 401, {'WWW-Authenticate': 'Basic realm="Login required!"'})

    if check_password_hash(user.password, auth.password):
        token = jwt.encode({'public_id': user.public_id, 'exp': datetime.datetime.now() + datetime.timedelta(minutes=30)}, app.config['SECRET_KEY'])

        return jsonify({'token': token.decode('UTF-8')})

    return make_response('Could not verify', 401, {'WWW-Authenticate': 'Basic realm="Login required!"'})



@app.route('/protected')
    @token_required
    def home_page(current_user):
        return jsonify({'status': 'protected'})


    @app.route('/unprotected')
    def home_page2():
        return jsonify({'status': 'unprotected'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...