flask-uploads 中的文件下载认证
File download authentication in 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 中描述的自定义实现?
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
是否有可能强制对 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 中描述的自定义实现?
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