基于用户配置文件模型归档角色的自定义用户权限

时间:2016-11-16 19:05:46

标签: django django-rest-framework

我正在使用Django rest框架创建一个Todo列表应用程序。

在这个应用程序中,只有经理可以在列表中发布任务。 用户个人资料有一个名为角色的字段。 我有一个扩展用户模型的用户配置文件模型。

model.py

{{1}}

用户个人资料有一个角色字段。

我希望唯一的经理可以在我的应用中发布任务。

如何编写自定义用户权限才能实现此目的? 仅限于POST请求。可以允许所有其他请求。

1 个答案:

答案 0 :(得分:0)

您将创建一个子类rest_framework.permissions.IsAuthenticated的权限,并在has_permission(self, request, view)see more)中添加您的逻辑。

如果您只想将其应用于POST,只需检查请求的方法,如果方法不同,则返回True。类似的东西:

from rest_framework import permissions

class CustomPermission(permissions.IsAuthenticated):

    def has_permission(self, request, view):
        if request.user.user_profile.role == 'ADMIN' or request.method != 'POST':
            return True

        return False

不要忘记在您的视图permission_classes中包含此权限。

PS:我应该警告你,但是,允许只有管理员执行POST任务,同时允许所有人对它们进行PUT和DELETE,这有点奇怪。也许你的意思是你想只允许 safe_methods 中的每个人(GET,OPTIONS和HEAD)?如果是这种情况,请将request.method != 'POST'替换为request.method in permissions.SAFE_METHODS