所有用户生成的媒体文件都存储在GridFS中。目前,我需要实现某种类型的访问系统,基于文件GridFS的权限。
例如,我们在GridFS中有一个名为"passwords.txt“的文件,只有拥有"allowed_to_download_passwords”权限的用户才能实际访问该文件。
我发现的是使用Django视图的http://wiki.nginx.org/XSendfile,它将检查权限并为nginx返回正确的响应。它适用于文件系统介质存储,但我如何使用GridFS实现它?我已经见过nginx-gridfs了,但看起来它太旧了,而且不可维护……
还有没有其他可以在生产中使用的选项?
发布于 2014-08-28 15:21:17
当您使用GridFS上传文件时,您也可以为该文件添加一些标签或属性。例如,
GridFSInputFile gInputFile = gridfs.createFile(inputStream, filename);
gInputFile.put("read_permissions", "allowed_to_download_passwords");
gInputFile.put("write_permissions", "allowed_to_change_passwords");现在,您上传的文件将具有两个属性。如果有人试图读取该文件,您将查看该用户是否具有"allowed_to_download_passwords“权限。如果用户没有该权限,那么他/她将读取该文件,因为该文件需要"allowed_to_change_passwords“权限。
这种方法需要更多的编程工作。
我强烈建议您考虑使用Apache ManifoldCF
https://stackoverflow.com/questions/25207083
复制相似问题