DRF-自定義許可權
阿新 • • 發佈:2021-01-02
rest_framework自帶的許可權
- 引入
from rest_framework import permissions
- permissions.AllowAny
- 允許所有人訪問
- permissions.IsAuthenticated
- 僅允許登入的人員訪問
- 判斷條件是request.user and request.user.is_authenticated
- permissions.IsAdminUser
- 僅允許管理員訪問
- 判斷條件是request.user and request.user.is_staff
- permissions.IsAuthenticatedOrReadOnly
- 是登入的使用者,並且這個API是隻能讀的(也就是GET、OPTIONS、HEAD)
自定義許可權
- 條件
有時候drf自帶的許可權無法滿足要求,那麼我們可以自定義許可權。自定義許可權要遵循兩個條件:
1、繼承自permissions.BasePermission
2、 現has_permission(self,request,view)或者是has_object_permission(self, request, view, obj)方法。第一個方法用管理整個檢視的訪問許可權,第二個方法可以用來管理某個物件的訪問許可權(比如只能修改自己的使用者資訊) - 示例
from rest_framework import permissions class IsOwnerOrReadOnly(permissions.BasePermission): # 只允許檢視使用者自己建立的資料 def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_METHODS: return True return obj.owner == request.user
from rest_framework import permissions
class ShowPagePermissions(permissions.BasePermission):
def has_permission(slef,request,view):
if request.user.has_perm('app名.許可權標識'):
return true
else:
return flase