Django-auth組件

Django-auth組件

1 表結構

我們從python manage.py migrate為我們創建的auth組件內置的表開始看

  • auth_user:用戶表存儲用戶信息(登錄admin后臺)

    里面的字段分兩類:用戶基本信息(用戶名,郵箱,密碼等)和2張M2M表(用戶+權限,用戶+組)(與權限相關)

  • auth_permission:權限表,存儲所有表生成的增刪改查的URL(每張表4個路由<——>路由的別名)

  • auth_user_user_permissions:用戶表和權限表的多對多關系表,里面放user_idpermission_id

  • auth_group:組表,里面放id和組名,和權限表有多對多的關系(對權限進行分組)

  • auth_user_groups:用戶表和組表的關系表,給用戶分組

  • auth_group_permissions: 組表和權限表的關系表,給權限分組

2 登錄路由

當我們執行python manage.py createsuperuser時,會創建超級用戶

我們從超級用戶的登錄路由來看

在這里插入圖片描述

源碼嵌套比較多(要重復看),重點在重用和解耦,可實現比較多的自定義

3 首頁權限分配

當用戶登錄成功后,展示的是基于admin注冊的表,其中

  • 超級用戶全部可見

    在這里插入圖片描述

  • 其他用戶,只要增刪改查4個權限有一個權限被分配,就可以看見

    在這里插入圖片描述

我們來看auth源碼中是如何控制這種權限的分配

從前面的路由分析中,當我們通過登錄成功后,就是執行self.index來展示首頁的信息

在這里插入圖片描述

總結:

  • 獲取所有通過admin注冊的Model
  • 根據當前的request.user去數據庫校驗,判斷是否展示

4 按鈕控制

auth組件中我們可以控制是否展示add、delete等按鈕

上文的分析圖中我們可以得到app_list中包含的是獲取的具體權限信息

app_list:
[{"name": "App01","app_label": "app01","app_url": "/admin/app01/","has_module_perms": true,"models": [{"model": "<class 'app01.models.Depart'>","name": "Departs","object_name": "Depart","perms": {"add": false,"change": false,"delete": false,"view": true},"admin_url": "/admin/app01/depart/","add_url": "None","view_only": true}]},{"name": "Authentication and Authorization","app_label": "auth","app_url": "/admin/auth/","has_module_perms": true,"models": [{"model": "<class 'django.contrib.auth.models.Group'>","name": "Groups","object_name": "Group","perms": {"add": true,"change": true,"delete": true,"view": true},"admin_url": "/admin/auth/group/","add_url": "/admin/auth/group/add/","view_only": false}]}
]

我們可以通過每個app下每張表的權限true/false來判斷是否有權限

具體判斷則在每張表的HTML模板中

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15983.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為OD機試【找出通過車輛最多顏色】(java)(100分)

1、題目描述 在一個狹小的路口&#xff0c;每秒只能通過一輛車&#xff0c;假設車輛的顏色只有 3 種&#xff0c;找出 N 秒內經過的最多顏色的車輛數量。 三種顏色編號為0 &#xff0c;1 &#xff0c;2。 2、輸入描述 第一行輸入的是通過的車輛顏色信息[0,1,1,2] &#xff0…

嵌入式0基礎開始學習 ⅠC語言(4)循環結構

0.問題引入 求0~100數據之和&#xff1a; int sum 0; sum 1234....100; 廢手&#xff0c;那么有沒有一種好的方法取操作呢&#xff1f; int sum 0; int i 1; sum sum i; // sum 01; …

GB28181協議中常用SDP信息的含義

u字段&#xff1a;u行應填寫視音頻文件的URI。該URI取值有兩種方式&#xff1a;簡捷方式和普通方式。簡捷方式直接采用產生該歷史媒體的媒體源&#xff08;如某個攝像頭&#xff09;的設備ID&#xff08;應符合6.1.2的規定&#xff09;以及相關參數&#xff08;如回放類型、下載…

Three.js——二維平面、二維圓、自定義二維圖形、立方體、球體、圓柱體、圓環、扭結、多面體、文字

個人簡介 &#x1f440;個人主頁&#xff1a; 前端雜貨鋪 ?開源項目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;?♂?學習方向&#xff1a; 主攻前端方向&#xff0c;正逐漸往全干發展 &#x1…

在Mac電腦下怎么部署QAnything?

在Mac電腦下部署QAnything&#xff0c;可以選擇使用純Python環境進行部署&#xff0c;這種方式不依賴GPU&#xff0c;適合在Mac等筆記本電腦上運行。以下是基于QAnything的純Python環境安裝教程的步驟[18]&#xff1a; 安裝要求 Python 3.10&#xff08;建議使用Anaconda3來管…

RabbitMQ-默認讀、寫方式介紹

1、RabbitMQ簡介 rabbitmq是一個開源的消息中間件&#xff0c;主要有以下用途&#xff0c;分別是&#xff1a; 應用解耦&#xff1a;通過使用RabbitMQ&#xff0c;不同的應用程序之間可以通過消息進行通信&#xff0c;從而降低應用程序之間的直接依賴性&#xff0c;提高系統的…

功率電感的設計步驟

文章目錄 1&#xff1a;高導磁氣隙&#xff08;鐵氧體&#xff09;1.1設計原理1.2 設計步驟 2 鐵粉芯2.1&#xff1a;設計原理2.2&#xff1a;設計步驟 TI電感設計 學習視頻原鏈接 截圖 1 截圖1 截圖1 截圖 2 截圖2 截圖2 1&#xff1a;高導磁氣隙&#xff08;鐵氧體&#…

基于機器學習判斷面部微表情發現哪些人更容易診有帕金森病

1. 概述 帕金森病&#xff08;Parkinson’s disease&#xff0c;PD&#xff09;是一種慢性、進展性的神經退行性疾病&#xff0c;主要影響運動系統。該病癥以大腦中黑質致密部多巴胺能神經元的逐漸喪失為特征&#xff0c;導致多巴胺&#xff08;一種重要的神經遞質&#xff09…

【Qt】深入探索Qt窗口與對話框:從創建到管理:QDockWidget(浮動窗口)、QDialog(對話框)

文章目錄 前言&#xff1a;1. 浮動窗口2. 對話框介紹2.1. 示例&#xff1a;主窗口中&#xff0c;通過點擊按鈕&#xff0c;彈出一個新的對話框。2.2. 創建自定義對話框2.2.1. 純代碼的方式2.2.2. 圖形化界面的方式 3. 模態對話框 和 非模態對話框4. Qt 內置對話框4.1. 消息對話…

Nginx R31 doc-12-NGINX SSL Termination 安全加密

前言 大家好&#xff0c;我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的&#xff0c;可以參考我的另一個項目&#xff1a; 手寫從零實現簡易版 tomcat minicat nginx 系列 從零手…

Git Submodules:深入理解與應用

在大型項目或跨多個獨立項目的開發中&#xff0c;代碼管理往往變得復雜。Git Submodules 是 Git 提供的一個強大功能&#xff0c;允許你在一個 Git 倉庫&#xff08;稱為父倉庫&#xff09;中嵌套另一個 Git 倉庫&#xff08;稱為子模塊倉庫&#xff09;。本文將詳細介紹 Git S…

Linux/Windows下如何同時運行服務端和客戶端

假設服務端和客戶端程序分別為server.c和client.c注意順序&#xff01; 先運行服務端&#xff0c;后運行客戶端先結束客戶端&#xff0c;后結束客戶端 編譯 gcc -o server server.cgcc -o server client.c運行 # 先運行服務器 ./server# 再運行客戶端 ./client./表示當前目錄…

Hybrid Block Storage for Efficient Cloud Volume Service——論文泛讀

TOS 2023 Paper 論文閱讀筆記整理 問題 傳統桌面和服務器應用程序向云的遷移給底層云存儲帶來了高性能、高可靠性和低成本的挑戰。由于這些傳統應用程序的I/O模式和一致性要求&#xff0c;與采用特定編程模型和范式&#xff08;如MapReduce[22]和RDD[52]&#xff09;的云原生…

香橙派AIpro(OrangePi AIPro)開發板初測評

開發板簡介 最近&#xff0c;我拿到手一款Orange Pi AI Pro 開發板&#xff0c;它是香橙派聯合華為精心打造的高性能AI 開發板&#xff0c;最早發布于2023年12月&#xff0c;其搭載了昇騰AI 處理器&#xff0c;可提供8TOPS INT8 的計算能力&#xff0c;內存提供了8GB 和16GB兩…

基于jeecgboot-vue3的Flowable新建流程定義(一)

因為這個項目license問題無法開源&#xff0c;更多技術支持與服務請加入我的知識星球。 1、vue3版本因為流程分類是動態的&#xff0c;不再固定了&#xff0c;所以新建的時候需要選擇建立哪種流程類型的流程 代碼如下&#xff1a; <!-- 選擇模型的流程類型對話框 -->&…

算法提高之一個簡單的整數問題2

算法提高之一個簡單的整數問題2 核心思想&#xff1a;線段樹 懶標記&#xff1a;add存每個子節點需要加的數pushdown&#xff1a;將懶標記向下存 同時清除本行懶標記 #include <iostream>#include <cstring>#include <algorithm>using namespace std;type…

數據結構(六)圖

2024年5月26日一稿(王道P220) 6.1 圖的基本概念 6.1.1 圖的定義 6.2 圖的存儲及基本操作 6.2.1鄰接矩陣法 6.2.2 鄰接表

python web自動化(分布式測試Grid)

Grid介紹 Selenium Grid 是 Selenium 提供的?個?具&#xff0c;?于?持在多臺計算機上并?運?測試。 它允許將測試分發到不同的機器和瀏覽器組合上&#xff0c;同時收集結果。 1.并?執?測試?例&#xff1a;在不同的機器上并?執?測試?例&#xff0c;從?加速整個測試過…

Vulhub——adminer

文章目錄 一、CVE-2021-21311&#xff08;SSRF&#xff09;二、CVE-2021-43008&#xff08;遠程文件讀取&#xff09; 一、CVE-2021-21311&#xff08;SSRF&#xff09; Adminer是一個PHP編寫的開源數據庫管理工具&#xff0c;支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL…

如何在WRF模型中更好地設置這些海洋物理參數以提高模擬精度?

在WRF&#xff08;Weather Research and Forecasting&#xff09;模型中正確設置海洠物理參數是提高模擬精度的關鍵&#xff0c;特別是當模擬涉及到海洋和大氣的相互作用時。以下是一些提高模擬精度的策略和建議&#xff1a; 1. 理解模擬的地區和目標 在進行參數設置之前&…