我已经使用DRF开发了API。我正在努力将Django默认权限中的授权部分与我们在admin部分中为每个角色定义的API相关联。
假设我有两个API Customer Management
和Customer Sales
,并在Django管理门户上从它们创建了两个角色。 manager
角色将仅管理客户(add
,view
,delete
和update
),而sales
角色将管理销售({{1} },add
,view
和delete
)每个客户。
当我尝试在管理门户中对其进行测试时,权限可以正常工作。相应的角色具有相应的访问权限。如果我将其与REST API一起使用,它将无法遵守后端定义的权限。就像两个角色都可以访问两个API一样。
我该如何处理?我应该忽略自己在Django中使用的旧系统(update
,auth_permission
,auth_group_permissions
)而实施自己的权限系统,还是有使用Django权限的替代方法来完成这项工作?
答案 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/