2015-09-24 2 views
1

Есть ли возможность принудительно аутентифицировать файлы, обслуживаемые Flask-Uploads, или хотя бы отключить этот маршрут?Проверка подлинности загрузки файлов в флеш-загрузках

@uploads_mod.route('/<setname>/<path:filename>') 
def uploaded_file(setname, filename): 
    config = current_app.upload_set_config.get(setname) 
    if config is None: 
     abort(404) 
    return send_from_directory(config.destination, filename) 

кажется, что любой файл, который загружается может быть загружен любой (даже не вошли в систему) пользователь.

Или только возможность использовать пользовательскую реализацию, как описано в Flask Uploading Files?

ответ

0

Похоже, что Flask-Uploads не предлагает способ изменения поведения маршрута. Вам не нужно отказываться от Flask-Uploads, но вам просто нужно заменить представление своей собственной версией.

Предполагая, что вы используете Flask-Login, и все, что вы хотите, это простая проверка login_required, вы можете просто заменить функцию в app.view_functions с завернутой версией.

from flask_login import login_required 

app.view_functions['_uploads.uploaded_file'] = login_required(app.view_functions['_uploads.uploaded_file']) 

Если вам нужно что-то более сложное, напишите свой собственный взгляд и замените его на это. Вы можете использовать app.endpoint, чтобы украсить функцию, а не напрямую использовать app.view_functions.

@app.endpoint('_uploads.uploaded_file') 
@login_required 
def my_uploaded_file(setname, filename): 
    # do custom stuff 
Смежные вопросы