在使用Django-REST-framework(以下都稱為restful)時(shí)會(huì)遇到接口的權(quán)限問題,當(dāng)需要定義角色權(quán)限的時(shí)候饺谬,一般都會(huì)定義一個(gè)原鑒權(quán)函數(shù)浴捆,例如:
class IsSuperAdmin(permissions.BasePermission):
"""
超級(jí)管理員
"""
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
定義多個(gè)權(quán)限函數(shù)郁稍,同時(shí)按照某個(gè)邏輯增加到某個(gè)接口上面俱病,例如:
permission_classes = ( IsAdmin | IsSuperAdmin,)
類似這樣組合權(quán)限控制接口的