【问题标题】:File download authentication in flask-uploads烧瓶上传中的文件下载身份验证
【发布时间】:2015-09-24 14:46:33
【问题描述】:

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

【问题讨论】:

    标签: python flask flask-uploads


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 1970-01-01
      • 2021-11-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多