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中描述的自定义实现?

4

1 回答 1

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
于 2015-09-24T15:45:27.707 回答