權限組件
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