V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
loading
V2EX  ›  问与答

flask 文件下载权限管理

  •  
  •   loading · 2015-06-11 16:34:01 +08:00 via Android · 3847 次点击
    这是一个创建于 3489 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在用 flask 写一个文件管理系统,涉及到文件的权限问题。

    能配合nginx吗?还是要 flask直接返回文件流?
    第 1 条附言  ·  2015-06-11 17:16:56 +08:00
    目前我用的是 flask 内置的 send_from_directory(path,filename)
    第 2 条附言  ·  2015-12-04 19:29:09 +08:00
    这个是阻塞的,大家注意
    4 条回复    2015-06-11 17:28:46 +08:00
    leojoy710
        1
    leojoy710  
       2015-06-11 16:40:32 +08:00   ❤️ 1
    严格的权限控制的话 就程序返回

    不严格的 可以nginx做front 程序通过权限验证之后给个302什么的到对应的nginx的url
    不过这样的话 用户知道url了之后就能一直下载了...
    undeflife
        2
    undeflife  
       2015-06-11 16:49:39 +08:00   ❤️ 2
    程序处理权限然后 X-Accel-Redirect 交给nginx处理
    loading
        3
    loading  
    OP
       2015-06-11 17:11:50 +08:00 via Android
    @undeflife 这个似乎也没和当前会话有绑定,似乎也不太安全?
    undeflife
        4
    undeflife  
       2015-06-11 17:28:46 +08:00   ❤️ 1
    @loading

    response.headers['X-Accel-Redirect'] = real_download_url
    response.headers['Content-Type'] = "application/octet-stream"
    response.headers['Content-Disposition'] = "attachment; filename=aaa.zip"

    你真实的下载地址不管是直接访问磁盘文件还是云存储的下载url 这个是不会暴露给用户的.用户看到的还是请求到你flask的那个url 而且你同样可以使用Set-Cookie等,所以我想不到你指的不太安全是指得什么场景?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2777 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.