2012-01-14 154 views
1

在我的应用程序中,我有时会生成一张新照片。在阅读了评论here之后,我决定将图片存储在文件系统和数据库中的元数据中,所以现在我的文件是独立于数据库静态提供的(bd给用户提供了他们想要访问的文件名,一个静态文件服务器)。访问控制静态资源

但是,我在这里的问题是,我并不总是希望用户看到其他用户生成的图片。比方说,例如,用户Joe创建图片A和B,用户Sue创建C和D.我不希望Joe能够看到C和D,而我不希望Sue看到A和B.因为所有文件静态服务,如果乔恰好猜测C的网址,他可以访问它。

由于图片的投放方式是相当多了我的Django的控制,我不知道这里的解决方案是什么,除了加密文件(这是复杂的,资源密集型)

+2

见http://serverfault.com/questions/332631/how-can-i-protect-files-on-my-nginx-server – sanmai 2012-01-14 01:58:15

+2

也http://stackoverflow.com/问题/ 4022260 /如何对检测-X-加速 - 重定向-nginx的-X-的sendfile的Apache支持功能于PHP – sanmai 2012-01-14 01:59:38

回答

1

简单的方法是使用django send_file [1]来做到这一点。这很容易实现,但不能很好地扩展。我用它来提供动态生成的报告。这个解决方案的唯一优点是它是所有的python代码。

更好的方法是使用sanmai链接上的信息。你也可以看看这里:http://www.sensibledevelopment.com/2010/11/django-sendfile-an-for-abstraction-large-file-serving-in-django/为一些Django的具体信息。

1:http://djangosnippets.org/snippets/101/

1

使用某个属性的一个或多个MD5十六进制作为图像路径的一部分;路径将是非常随机的。