前后端分離進行權限管理之后端表結構設計(一)


一、表結構設計

from django.db import models

# Create your models here.
from django.db import models

class Menu(models.Model):
    """
    菜單表
    """
    title = models.CharField(verbose_name='菜單名稱',max_length=32,unique=True)
    icon = models.CharField(max_length=128, blank=True, null=True)
    position = models.IntegerField(blank=True,null=True)

    def __str__(self):
        return self.title

class Action(models.Model):
    """
    操作:增刪改查
    """
    title = models.CharField(verbose_name='操作標題', max_length=32)
    code = models.CharField(verbose_name='方法', max_length=32)

    def __str__(self):
        return self.title

class Permission(models.Model):
    """
    權限表
    """
    title = models.CharField(verbose_name='權限標題', max_length=32)
    url = models.CharField(verbose_name='含正則的URL', max_length=128)
    action=models.ForeignKey(verbose_name='操作',to='Action',null=True,blank=True,on_delete=models.CASCADE) 
    parent=models.ForeignKey(verbose_name='父權限',to='self',null=True,blank=True,on_delete=models.CASCADE,limit_choices_to={'parent__isnull':True})
    menu=models.ForeignKey(verbose_name='菜單',to='Menu',null=True,blank=True,on_delete=models.CASCADE)

    def __str__(self):
        return self.title


class Role(models.Model):
    """
    角色
    """
    title = models.CharField(verbose_name='角色名稱', max_length=32)
    desc = models.CharField(verbose_name='角色描述',max_length=64,null=True,blank=True)
    permissions = models.ManyToManyField(verbose_name='擁有的所有權限', blank=True,to='Permission')


    def __str__(self):
        return self.title


class UserInfo(models.Model):
    """
    用戶表
    """
    username = models.CharField(verbose_name='用戶名', max_length=32)
    password = models.CharField(verbose_name='密碼', max_length=64)
    email = models.CharField(verbose_name='郵箱', max_length=32)
    roles = models.ManyToManyField(verbose_name='擁有的所有角色', to=Role,related_name="roles", blank=True)

    class Meta:
        abstract=True

    def __str__(self):
        return self.username

二、表結構說明

上述有5張表,但因為用戶表與角色表、角色表與權限表都是多對多的關系,故而會多生成2張表。

1、菜單表(Menu)

是主頁右側的菜單,它的下面是所有的get方式的權限url

2、請求方式表(Action)

是所有請求url的請求方式,在頁面上的表現就是增加、修改、刪除這種按鈕

 

 

3、權限表(Permission)

是每一個請求的url,在頁面上的表示就是所有的頁面以及頁面上對應的增、刪、改的按鈕

4、角色表(Role)

每一個用戶擁有的角色

5、用戶表

所有的用戶信息

6、用戶角色表

根據用戶表和角色表的多對多關系生成的第3張表,它呈現了用戶和角色的對應關系

7、角色權限表

根據權限表和角色表的多對多關系生成的第3張表,它呈現了權限和角色的對應關系

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM