在flask-uploads中进行文件下载验证

时间:2015-09-24 14:46:34

标签: python flask flask-uploads

是否有可能强制对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中描述的自定义实现?

1 个答案:

答案 0 :(得分: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
相关问题