静态资源的访问控制

时间:2012-01-14 01:55:30

标签: mysql database django apache data-management

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

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

由于图片的提供方式几乎不受我的django的控制,我不知道这里的解决方案是什么,除了加密文件(这是复杂和资源密集的)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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/