Django權限機制實現代碼詳解-創新互聯

本文研究的主要是Django權限機制的相關內容,具體如下。

我們提供的服務有:做網站、成都網站建設、微信公眾號開發、網站優化、網站認證、漢南ssl等。為上千多家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的漢南網站制作公司

1. Django權限機制概述

權限機制能夠約束用戶行為,控制頁面的顯示內容,也能使API更加安全和靈活;用好權限機制,能讓系統更加強大和健壯。因此,基于Django的開發,理清Django權限機制是非常必要的。

1.1 Django的權限控制

Django用user, group和permission完成了權限機制,這個權限機制是將屬于model的某個permission賦予user或group,可以理解為全局的權限,即如果用戶A對數據模型(model)B有可寫權限,那么A能修改model B的所有實例(objects)。group的權限也是如此,如果為group C 賦予model B的可寫權限,則隸屬于group C 的所有用戶,都可以修改model B的所有實例。

這種權限機制只能解決一些簡單的應用需求,而大部分應用場景下,需要更細分的權限機制。以博客系統為例,博客系統的用戶可分為『管理員』、『編輯』、『作者』和『讀者』四個用戶組;博客系統管理員和編輯具有查看、修改和刪除所有的文章的權限,作者只能修改和刪除自己寫的文章,而讀者則只有閱讀權限。管理員、編輯和讀者的權限,我們可以用全局權限做控制,而對于作者,全局權限無法滿足需求,僅通過全局權限,要么允許作者編輯不屬于自己的文章,要么讓作者連自己的文章都無法修改。

上述的應用場景,Django自帶的權限機制無法滿足需求,需要引入另一種更細的權限機制:對象權限(object permission)。

Object Permission是一種對象顆粒度上的權限機制,它允許為每個具體對象授權。仍沿用最開始的例子,如果model B有三個實例 B1,B2 和B3,如果我們把B1的可寫權限賦予用戶A,則A可以修改B1對象,而對B2,B3無法修改。

對group也一樣,如果將B2的可寫權限賦予group C,則隸屬于group C的所有用戶均可以修改B2,但無法修改B1和B3。結合Django自帶權限機制和object permission,博客系統中作者的權限控制迎刃而解:系統全局上不允許作者編輯文章,而對于屬于作者的具體文章,賦予編輯權限即可。

Django其實包含了object permission的框架,但沒有具體實現,object permission的實現需要借助第三方app django-guardian,我們在開發中用調用django guradian封裝好的方法即可。

1.2 Django的權限項

Django用permission對象存儲權限項,每個model默認都有三個permission,即add model, change model和delete model。例如,定義一個名為『Car』model,定義好Car之后,會自動創建相應的三個permission:add_car, change_car和delete_car。Django還允許自定義permission,例如,我們可以為Car創建新的權限項:drive_car, clean_car, fix_car等等

需要注意的是,permission總是與model對應的,如果一個object不是model的實例,我們無法為它創建/分配權限。

2. Django 自帶權限機制的應用

2.1 Permission

如上文所述,Django定義每個model后,默認都會添加該model的add, change和delete三個permission,自定義的permission可以在我們定義model時手動添加:

class Task(models.Model):
  ...
  class Meta:
    permissions = (
      ("view_task", "Can see available tasks"),
      ("change_task_status", "Can change the status of tasks"),
      ("close_task", "Can remove a task by setting its status as closed"),
    )

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章標題:Django權限機制實現代碼詳解-創新互聯
本文網址:http://m.kartarina.com/article0/diceio.html

成都網站建設公司_創新互聯,為您提供網站內鏈、App設計手機網站建設、網站設計、網站導航響應式網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 亚洲中文无码av永久| 高h纯肉无码视频在线观看| 无码AV片在线观看免费| 久久Av无码精品人妻系列| 久久久g0g0午夜无码精品| 国产精品无码DVD在线观看| 亚洲的天堂av无码| 亚洲人成无码www久久久| 久久国产亚洲精品无码| 13小箩利洗澡无码视频网站免费| 亚洲精品久久无码av片俺去也| 久久久久久国产精品无码下载| 亚洲av无码一区二区三区天堂古代| 狠狠躁天天躁无码中文字幕 | 自拍中文精品无码| 综合无码一区二区三区四区五区 | 人妻中文字系列无码专区| 无码人妻少妇伦在线电影| 无码国产精品一区二区免费式直播 | 亚洲AV无码一区二区三区人| 人妻系列AV无码专区| 无码少妇一区二区浪潮av| 免费无码AV电影在线观看| 亚洲乱亚洲乱妇无码| 18禁网站免费无遮挡无码中文| 亚洲AV无码一区东京热| 亚洲av中文无码乱人伦在线r▽| 人妻无码精品久久亚瑟影视| 亚洲a∨无码精品色午夜| 亚洲午夜无码毛片av久久京东热| 四虎成人精品无码| 久久精品亚洲AV久久久无码| 日韩乱码人妻无码系列中文字幕| 亚洲国产精品无码成人片久久| 人妻无码人妻有码中文字幕| 在线a亚洲v天堂网2019无码| 亚洲VA中文字幕无码一二三区 | 内射人妻无码色AV天堂| 无码人妻aⅴ一区二区三区| 少妇无码太爽了不卡视频在线看| 热の无码热の有码热の综合|