Используйте только статическое приложение ReactJS с Flask при аутентификации пользователя [duplicate]

Проверьте все пакеты, которые вы установили для php, используя:

yum list installed | grep remi

Установите все соответствующие пакеты php, особенно php-devel на вашем компьютере.

9
задан davidism 23 December 2014 в 00:28
поделиться

1 ответ

Флажок добавляет статический маршрут для обслуживания статических файлов. Когда вы находитесь в производстве, вы обычно «коротко замыкаете» этот маршрут, чтобы Nginx обслуживал файлы до того, как запрос когда-либо попадет в ваше приложение. Вместо того, чтобы добавлять это «короткое замыкание», оставьте это и разрешите Flask обрабатывать запросы. Перезапишите статический маршрут с помощью пакета, который обернут флагом-Login login_required.

from flask_login import login_required

app.view_functions['static'] = login_required(app.send_static_file)

Это, как правило, избыточно, поскольку вы хотите, чтобы действительно статические файлы важно, чтобы страницы выглядели правильно для пользователей без регистрации (в противном случае CSS даже не будет отправлен на страницу входа). Вместо этого «короткое замыкание» статической папки, которую должен обслуживать Nginx, и определите маршрут, который будет обслуживать защищенные файлы из какого-либо другого каталога, например папки экземпляра. См. flask.send_from_directory .

import os
from flask import send_from_directory
from flask_login import login_required

@app.route('/protected/<path:filename>')
@login_required
def protected(filename):
    return send_from_directory(
        os.path.join(app.instance_path, 'protected'),
        filename
    )

Это будет обслуживать файлы из каталога «protected» в папке экземпляра только для входа в систему. Могут быть добавлены и другие ограничения, например, только для определенных пользователей доступ к определенным файлам. Подобно статическому пути, вы можете сгенерировать URL-адрес файла с помощью:

url_for('protected', filename='data/example.csv')
15
ответ дан davidism 21 August 2018 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: