Django如何實(shí)現(xiàn)RBAC權(quán)限管理
Django RBAC權(quán)限管理
概述
RBAC(Role-Based Access Control,基于角色的訪問控制),通過角色綁定權(quán)限,然后給用戶劃分角色。
比如說:
- 一個(gè)用戶擁有若干個(gè)角色,這個(gè)角色呢又擁有若干個(gè)權(quán)限,CEO,具有公司全局的權(quán)限;
- 部門經(jīng)理,具有部門全局的權(quán)限;
- 部門主管,具有部門部分的權(quán)限;
- 普通員工,具有部門一小部分權(quán)限。
不同的角色,能夠獲取的權(quán)限是不同的,角色的引入,讓權(quán)限管理就會非常的靈活
流程圖
models.py
資源表和角色表是多對多關(guān)系
from django.db import models # Create your models here. # 角色表 class Roles(models.Model): name = models.CharField(max_length=50) status = models.BooleanField(default=True) class Meta: db_table='roles' # 管理員表 class Admin_user(models.Model): username = models.CharField(max_length=50,verbose_name='用戶名') password = models.CharField(max_length=200,verbose_name='密碼') pic = models.CharField(max_length=200,default='',verbose_name='頭像') status = models.BooleanField(default=True,verbose_name='狀態(tài)') # 狀態(tài) supper = models.BooleanField(default=False,verbose_name='是否為超級管理員') # 是否為超級管理員 role = models.ForeignKey(Roles,on_delete=models.CASCADE) class Meta: db_table='admin_user' # 資源表 class Resource(models.Model): name = models.CharField(max_length=50) status = models.BooleanField(default=True) url = models.CharField(max_length=50,default='') level = models.IntegerField() pid = models.ForeignKey('self',on_delete=models.SET_NULL,null=True,blank=True,related_name='subs') roles = models.ManyToManyField(Roles,related_name='resources',null=True,blank=True) class Meta: db_table='resource'
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python基于pygame實(shí)現(xiàn)單機(jī)版五子棋對戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了Python基于pygame實(shí)現(xiàn)單機(jī)版五子棋對戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12python 獲取sqlite3數(shù)據(jù)庫的表名和表字段名的實(shí)例
今天小編就為大家分享一篇python 獲取sqlite3數(shù)據(jù)庫的表名和表字段名的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN訓(xùn)練
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN網(wǎng)絡(luò)訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-05-05Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖
matplotlib是python的一個(gè)模塊,用于繪制各種圖形,今天介紹一下折線圖的繪制,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖的相關(guān)資料,需要的朋友可以參考下2022-05-05Python中常見的KeyError報(bào)錯(cuò)分析
在Python編程中,KeyError是一種非常常見的異常,它通常發(fā)生在嘗試訪問字典中不存在的鍵時(shí),本文將深入探討KeyError的報(bào)錯(cuò)原因、解決辦法,并通過代碼示例來演示如何避免這一錯(cuò)誤,需要的朋友可以參考下2024-07-07pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解
這篇文章主要介紹了pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05python數(shù)組復(fù)制拷貝的實(shí)現(xiàn)方法
這篇文章主要介紹了python數(shù)組復(fù)制拷貝的實(shí)現(xiàn)方法,實(shí)例分析了Python數(shù)組傳地址與傳值兩種復(fù)制拷貝的使用技巧,需要的朋友可以參考下2015-06-06Python裝飾器實(shí)現(xiàn)方法及應(yīng)用場景詳解
這篇文章主要介紹了Python裝飾器實(shí)現(xiàn)方法及應(yīng)用場景詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03