權限組件permission

權限組件

permission

"""
系統:
1)AllowAny:容許全部用戶,校驗方法直接返回True
2)IsAuthenticated:只容許登陸用戶
    必須request.user和request.user.is_authenticated都經過
3)IsAuthenticatedOrReadOnly:遊客只讀,登陸用戶無限制
    get、option、head 請求無限制
    前臺請求必須校驗 request.user和request.user.is_authenticated
4)IsAdminUser:是不是後臺用戶
    校驗 request.user和request.user.is_staff    is_staff(能夠登陸後臺管理系統的用戶)
    

自定義:基於auth的Group與Permission表
1)自定義權限類,繼承BasePermission,重寫has_permission
2)has_permission中完成
    拿到登陸用戶 user <= request.user
    校驗user的分組或是權限
    前兩步操做失敗 返回False => 無權限
    前兩步操做成功 返回True => 有權限
"""

自定義權限類:爲 管理員 分組成員

from rest_framework.permissions import BasePermission

class AdminPermission(BasePermission):
    # 繼承BasePermission,重寫has_permission
    def has_permission(self, request, view):
        # 有權限,返回True
        # 無權限,返回False
        user = request.user
        if not user:
            return False
        # 用戶是 管理員 分組 (管理員分組是Group表中的一條自定義記錄)
        if not user.groups.filter(name='管理員'):
            return False
        # 登陸的用戶必須是自定義管理員分組成員
        return True
相關文章
相關標籤/搜索