国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django Rest framework之權限的實現示例

2020-02-16 00:10:20
字體:
來源:轉載
供稿:網友

一、權限實例

在閱讀本文之前請先參考django rest framework 之 認證 中關于 django rest framework 的相關內容及實例

1、目錄結構

為了更好的管理各個功能組件,在django rest framework 之 認證 中我們說到可以將認證類單獨的拿出來,放到其他目錄下,然后導入到 views.py 文件中,在權限環節我們亦可以這么做,目錄結構就變成這樣

在api這個app下創建一個utils包專門用來存放相關的組件。

2、為模型類添加認證字段

我們在models.py中定義了兩個模型類,分別是

from django.db import modelsclass UserInfo(models.Model):  USER_TYPE = (    (1,'普通用戶'),    (2,'VIP'),    (3,'SVIP')  )  user_type = models.IntegerField(choices=USER_TYPE, default=1)  username = models.CharField(max_length=32)  password = models.CharField(max_length=64)class UserToken(models.Model):  user = models.OneToOneField(UserInfo,on_delete=models.CASCADE)  token = models.CharField(max_length=64)

UserInfo 中通過為用戶添加一個 user_type 字段來保證用戶的身份,是普通用戶,VIP還是SVIP,這樣就可以通過用戶的身份驗證不同的權限。如果想要定義一個視圖類,這個類中的邏輯只有超級用戶才能訪問。

3、具體權限認證

可以再utils中的 permissions.py 中這么寫

# utils/permission.pyclass SVIPPremission(object):  message = "必須是SVIP才能訪問" # 這里的message表示如果不通過權限的時候,錯誤提示信息  def has_permission(self,request,view):    if request.user.user_type != 3:      return False    return Trueclass MyPremission(object):  # 這個權限類表示當用戶為SVIP時不可通過  def has_permission(self,request,view):    if request.user.user_type == 3:      return False    return True

這里只是判斷用戶的 USER_TYPE 的字段,判斷用戶是否有權限,也可以添加其他的邏輯進行判斷。

4、全局配置

在上一節的django rest framework 之 認證 的認證中,將認證類放到了 settings.py 文件中,這樣會作用到視圖中的每一個視圖類,如果視圖類想要自己進行認證,只需要重寫 authentication_classes 即可,那么對于權限來說我們也可以這么做,

REST_FRAMEWORK = {  'DEFAULT_AUTHENTICATION_CLASSES': ['api.utils.authenticate.FirstAuthenticate', 'api.utils.authenticate.MyAuthenticate'],   "UNAUTHENTICATED_USER": None, # 匿名,request.user = None  "UNAUTHENTICATED_TOKEN": None,# 匿名,request.auth = None  "DEFAULT_PERMISSION_CLASSES": ['api.utils.permission.MyPermission'], # 表示每一個視圖類(只要不重寫permission_classes屬性),都需要SVIP的用戶才能訪問。}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓝田县| 温州市| 罗江县| 普格县| 泽库县| 怀仁县| 丹寨县| 陇川县| 昭觉县| 平和县| 霍城县| 鸡东县| 南汇区| 白山市| 罗田县| 云霄县| 周至县| 新巴尔虎右旗| 乐东| 鹤峰县| 唐海县| 宁国市| 三原县| 乌恰县| 祁门县| 邵阳市| 新巴尔虎左旗| 忻城县| 孟连| 新营市| 安陆市| 江川县| 榆中县| 大竹县| 曲沃县| 北海市| 静海县| 赤水市| 克拉玛依市| 扶绥县| 汕尾市|