判断用户权限后,如何高效的提供文件下载
2015-02-27 16:46
417 查看
问题:某些文件只希望特定用户可以下载,那么下载之前必须进行权限判断。判断通过时,跳转到被下载文件的真实地址肯定不行,这相当于没有做权限限制了。一般的做法是读取被下载的文件然后输出给用户。在这个过程中动态语言干了一件吃力不讨好的事情,转了一个弯读取数据然后在交给web服务器输出,多消耗了资源还可能降低下载速度。
对于此问题,我曾一度纠结,后来才发现web服务器有一个X-Sendfile的特性,可以很完美的解决这个问题。今天记录下以备将来查看。
X-Sendfile特性的基本原理,就是动态语言发送一个特殊的http header指令,这个指令只能被web服务器获取和识别,不会发送到用户端。其作用就是告诉web服务器一个文件路径,让其把这个文件发送给用户。不同web服务器可能有些差别,但几个常见的web服务器都支持这个特性。
以php为例
在Apache中可以这样写:
更详细的说明请看惠新宸博客
若是nginx
对于此问题,我曾一度纠结,后来才发现web服务器有一个X-Sendfile的特性,可以很完美的解决这个问题。今天记录下以备将来查看。
X-Sendfile特性的基本原理,就是动态语言发送一个特殊的http header指令,这个指令只能被web服务器获取和识别,不会发送到用户端。其作用就是告诉web服务器一个文件路径,让其把这个文件发送给用户。不同web服务器可能有些差别,但几个常见的web服务器都支持这个特性。
以php为例
在Apache中可以这样写:
<?php //..... //权限判断通过 header("X-Sendfile: /download/thaiki.exe");
更详细的说明请看惠新宸博客
若是nginx
<?php //..... //权限判断通过 header('X-Accel-Redirect: /download/thaiki.exe');更详细可以参考这篇博文
相关文章推荐
- 关于如何判断当前用户对文件有无写权限
- 如何动态生成txt文件供用户下载
- 如何取出SPS某个区域中的所有用户并判断所有用户的权限
- 如何查找用户的角色、事务码、参数文件、用户组等权限信息
- 如何在SharePointDesigner订制页面里判断用户权限
- ecshop的模板文件中如何判断用户是否登录
- 如何在SharePointDesigner订制页面里判断用户权限
- 【商业版、提供全部源码】基于RBAC的C#ASP.NET支持多用户的通用权限管理系统高质量源码10月份销售20套【提供操作手册设计文档下载】
- asp.net如何控制文件下载的权限?
- 如何实现Windows系统Users组用户可修改IP属性和限制Users组用户访问文件的权限!
- 限制文件的下载(非注册用户不能下载或者你加别的权限)
- 如何查找用户的角色、事务码、参数文件、用户组等权限信息
- 如何将特定目录下文件的浏览权限和下载权限分离开来。
- php运用readfile函数给隐藏下载文件地址增加权限判断
- 如何查找用户的角色、事务码、参数文件、用户组等权限信息
- asp.net动态生成txt文件并提供用户下载代码
- 如何用vsftpd实现用户不同权限:只能下载,可上传,管理权限等
- XP中如何解决备份文件夹拒绝访问问题(也可解决普通用户访问管理员用户的文件的权限问题)
- linux如何判断指定用户对指定目录具有的权限具体介绍
- 如何以普通用户的身份编辑无权限的文件