在使用Django-REST-framework(以下都稱為restful)時會遇到接口的權(quán)限問題,當(dāng)需要定義角色權(quán)限的時候,一般都會定義一個原鑒權(quán)函數(shù),例如:
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):
"""
系統(tǒng)管理員
"""
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
定義多個權(quán)限函數(shù),同時按照某個邏輯增加到某個接口上面,例如:
permission_classes = ( IsAdmin | IsSuperAdmin,)
類似這樣組合權(quán)限控制接口的