Django DRF角色级别权限

时间:2019-03-07 14:27:21

标签: django django-rest-framework django-rest-auth django-permissions

我已经使用DRF开发了API。我正在努力将Django默认权限中的授权部分与我们在admin部分中为每个角色定义的API相关联。

假设我有两个API Customer ManagementCustomer Sales,并在Django管理门户上从它们创建了两个角色。 manager角色将仅管理客户(addviewdeleteupdate),而sales角色将管理销售({{1} },addviewdelete每个客户

当我尝试在管理门户中对其进行测试时,权限可以正常工作。相应的角色具有相应的访问权限。如果我将其与REST API一起使用,它将无法遵守后端定义的权限。就像两个角色都可以访问两个API一样。

我该如何处理?我应该忽略自己在Django中使用的旧系统(updateauth_permissionauth_group_permissions)而实施自己的权限系统,还是有使用Django权限的替代方法来完成这项工作?

1 个答案:

答案 0 :(得分:1)

您可以按如下所示设置权限类

class CustomPermission(BasePermission):
    def has_permission(self, request, view):
        if request.user.is_authenticated():
            return True if request.has_perm('can_read') else False # or stuff similar to this 
        return False

并将此CustomPermission类用于您的APIView的属性。

有关DRF permissions的更多信息,请访问https://www.django-rest-framework.org/api-guide/permissions/