在使用Django-REST-framework(以下都称为restful)时会遇到接口的权限问题,当需要定义角色权限的时候,一般都会定义一个原鉴权函数,例如:
class IsSuperAdmin(permissions.BasePermission):
"""
超级管理员
"""
def has_permission(self, request, view):
if request.method not in permissions.SAFE_METHODS:
if not request.user.is_superuser:
return False
return True代码块
class IsAdmin(permissions.BasePermission):
"""
系统管理员
"""
def has_permission(self, request, view):
if request.method not in permissions.SAFE_METHODS:
role = get_role(request.user)
if role != RoleType.Admin.value:
return False
return True
定义多个权限函数,同时按照某个逻辑增加到某个接口上面,例如:
permission_classes = ( IsAdmin | IsSuperAdmin,)
类似这样组合权限控制接口的