我想只允许一些经过身份验证的用户(或使用具有特定权限)才能在Django中使用ImageField或FileField上传媒体文件。
我试图找到一种方法。 我只能找到让经过身份验证的用户通过apache基本或使用wsgi进行摘要式身份验证来查看媒体文件的方法。
暂时,我将媒体文件更改为chmod 777,以允许任何人上传图片。但我不认为这是安全问题的好方法。
有没有办法让只有特定用户(即特定组中的用户或用户具有特定权限)才能在Apache中上传媒体文件?
我可以进行权限检查,让特定用户可以在Django的视图中上传。但媒体文件夹仍然是777.我不想留下匿名用户可以读取媒体文件夹的写入权限。
答案 0 :(得分:0)
我希望您使用的是django-rest-framework。
您可以在django中定义Object level permissions。
# permissions.py
class IsAllowedToUpload(permissions.BasePermission):
"""
Custom permission to only allow certain users to upload media
"""
def has_permission(self, request, view, obj=None):
# write permission that allows only certain type of users to upload media.
# Note that this method should return True of False only.
return request.user.user_type == 'TYPE_YOU_WANT_TO_ALLOW'
然后在处理上传功能的views.py中。
class MyExampleView(generics.GenericAPIView):
permission_classes = (IsAllowedToUpload, )
# code #
好的,如果您只想允许登录用户,则可以使用一些预定义的权限类,您可以直接使用这些权限。 IsAuthenticated
检查一下:Ready to use permission classes
P.S您必须为表中的每个用户维护user_type
属性,然后您可以像这样管理每个用户。