繁体   English   中英

如何让特定用户在Django中上传媒体文件

[英]How to let specific user to upload media files in Django

我想只让一些经过身份验证的用户(或使用具有特定权限)可以在Django中使用ImageField或FileField上传媒体文件。

我试图找到一种方法。 我只能找到让经过身份验证的用户通过apache基本或使用wsgi进行摘要式身份验证来查看媒体文件的方法。

暂时,我将媒体文件更改为chmod 777,以允许任何人上传图像。 但我不认为这是安全问题的好方法。

有没有办法只让特定用户(即特定组中的用户或用户具有特定权限)在Apache上传媒体文件?

我可以进行权限检查,让特定用户可以在Django的视图中上传。 但媒体文件夹仍然是777.我不想留下匿名用户可以读取媒体文件夹的写入权限。

我希望你使用的是django-rest-framework。

您可以在django中定义对象级权限

# 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检查: 准备使用权限类

PS您必须为表中的每个用户维护user_type属性,然后您可以像这样管理每个用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM