【发布时间】:2021-07-19 23:49:37
【问题描述】:
如何限制对媒体图像 url 的访问,并使其只能由 django 中的访问所有者用户访问,
这是我的班级模型:
class private_image(models.Model):
i_user = models.OneToOneField(User, related_name='related_PRF_user', on_delete=models.CASCADE)
i_image= models.ImageField(upload_to='images', blank=True, null=True )
我的媒体设置是:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root/')
MEDIA_URL = '/media_url/'
例如:我不希望用户在他们的浏览器中放置像这样的图像网址“http://127.0.0.1:8000/media_url/images/67155_0_AVemgEZ.jpg”并打开图像,如果请求用户没有同一所有者用户。
我相信,我可以创建一个小函数来检查访问用户和请求的 URL '/media_url/images/' 以获取图像名称,然后使用图像名称从数据库中获取一个对象 然后检查所有者(i_user)是否相同的访问用户。
但是我怎样才能告诉 Django 在服务 MEDIA_URL 请求之前使用这个函数。
如果你有一个例子,那将非常有帮助。
提前谢谢你
【问题讨论】: