Django如何實(shí)現(xiàn)RBAC權(quán)限管理
Django RBAC權(quán)限管理
概述
RBAC(Role-Based Access Control,基于角色的訪問(wèn)控制),通過(guò)角色綁定權(quán)限,然后給用戶劃分角色。
比如說(shuō):
- 一個(gè)用戶擁有若干個(gè)角色,這個(gè)角色呢又擁有若干個(gè)權(quán)限,CEO,具有公司全局的權(quán)限;
- 部門經(jīng)理,具有部門全局的權(quán)限;
- 部門主管,具有部門部分的權(quán)限;
- 普通員工,具有部門一小部分權(quán)限。
不同的角色,能夠獲取的權(quán)限是不同的,角色的引入,讓權(quán)限管理就會(huì)非常的靈活
流程圖


models.py
資源表和角色表是多對(duì)多關(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='是否為超級(jí)管理員') # 是否為超級(jí)管理員
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實(shí)現(xiàn)壓縮pptx的功能
當(dāng)處理大型PPTX文件時(shí),其中包含許多高分辨率照片時(shí),文件大小可能會(huì)顯著增加,為了解決這個(gè)問(wèn)題,我們可以使用Python編程語(yǔ)言和python-pptx庫(kù)來(lái)壓縮PPTX文件中的照片,下面我們就來(lái)看看具體操作吧2024-02-02
解決python報(bào)錯(cuò)ImportError:urllib3?v2.0?only?supports?OpenSSL
這篇文章主要介紹了解決python報(bào)錯(cuò)ImportError:urllib3?v2.0?only?supports?OpenSSL?1.1.1+的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
python中的opencv和PIL(pillow)轉(zhuǎn)化操作
這篇文章主要介紹了python中的opencv和PIL(pillow)轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
python制作定時(shí)發(fā)送信息腳本的實(shí)現(xiàn)思路
這篇文章主要介紹了python實(shí)現(xiàn)企業(yè)微信定時(shí)發(fā)送文本消息的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開(kāi)發(fā)詳解
這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開(kāi)發(fā),結(jié)合實(shí)例形式較為詳細(xì)的分析了flask框架表單模板定義、數(shù)據(jù)提交等相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
Pycharm保存不能自動(dòng)同步到遠(yuǎn)程服務(wù)器的解決方法
今天小編就為大家分享一篇Pycharm保存不能自動(dòng)同步到遠(yuǎn)程服務(wù)器的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Python異常信息的不同展現(xiàn)方法總結(jié)
在日常開(kāi)發(fā)的過(guò)程中,當(dāng)代碼報(bào)錯(cuò)時(shí),我們通常要不斷打印、閱讀traceback提示信息,來(lái)調(diào)試代碼,這篇文章介紹了如何實(shí)現(xiàn)一個(gè)Exception?Hooks,使得traceback模塊的提示信息更加精確;同時(shí)還介紹了一些第三方庫(kù),這些庫(kù)也提供了Exception?Hooks的功能2022-11-11

