Django DRF 角色级别权限
Django DRF role level permission
我已经使用 DRF 开发了 API。我正在努力将我们在管理部分为每个角色定义的 Django 默认权限的授权部分与 API 联系起来。
假设我有两个 API 的 Customer Management
和 Customer Sales
,并在 Django 管理门户中根据它们创建了两个角色。 manager
角色将仅管理客户(add
、view
、delete
和 update
),而 sales
角色将管理销售(add
、view
、delete
和 update
) 每个客户。
当我尝试在管理门户中测试它们时,权限工作正常。相应的角色有相应的权限。如果我将其与 REST API 一起使用,则它不符合后端定义的权限。这就像两个角色都能够访问两个 API。
我该如何处理?我是否应该实施自己的权限系统而忽略 Django 中使用的旧权限系统(auth_permission
、auth_group_permissions
、auth_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/
的更多信息
我已经使用 DRF 开发了 API。我正在努力将我们在管理部分为每个角色定义的 Django 默认权限的授权部分与 API 联系起来。
假设我有两个 API 的 Customer Management
和 Customer Sales
,并在 Django 管理门户中根据它们创建了两个角色。 manager
角色将仅管理客户(add
、view
、delete
和 update
),而 sales
角色将管理销售(add
、view
、delete
和 update
) 每个客户。
当我尝试在管理门户中测试它们时,权限工作正常。相应的角色有相应的权限。如果我将其与 REST API 一起使用,则它不符合后端定义的权限。这就像两个角色都能够访问两个 API。
我该如何处理?我是否应该实施自己的权限系统而忽略 Django 中使用的旧权限系统(auth_permission
、auth_group_permissions
、auth_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/
的更多信息