Django DRF 角色级别权限

Django DRF role level permission

我已经使用 DRF 开发了 API。我正在努力将我们在管理部分为每个角色定义的 Django 默认权限的授权部分与 API 联系起来。

假设我有两个 API 的 Customer ManagementCustomer Sales,并在 Django 管理门户中根据它们创建了两个角色。 manager 角色将仅管理客户(addviewdeleteupdate),而 sales 角色将管理销售(addviewdeleteupdate) 每个客户

当我尝试在管理门户中测试它们时,权限工作正常。相应的角色有相应的权限。如果我将其与 REST API 一起使用,则它不符合后端定义的权限。这就像两个角色都能够访问两个 API。

我该如何处理?我是否应该实施自己的权限系统而忽略 Django 中使用的旧权限系统(auth_permissionauth_group_permissionsauth_user_user_permissions),或者是否有任何解决方法可以使用 Django 权限来完成这项工作?

您可以class如下

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 class 用于您的 APIView 属性。

有关DRF permissions visit https://www.django-rest-framework.org/api-guide/permissions/

的更多信息