role-based access control(rbac),指对于不同角色的用户,拥有不同的权限 。用户对应一个角色,一个角色拥有若干权限,形成用户-角色-权限的关系,如下图所示。当一个用户进行访问数据时,根据其角色判断其拥有的权限,限定其操作。通过django实现一个简单的rbac app,简要记录下过程。

基于角色的权限控制系统(role-based access control)

1.实现效果

  实现效果如下图所示,不同用户拥有不同角色,不同角色拥有不同权限。下图中只是对角色和用户两张表进行编辑和访问,当我们项目中还有其他数据需要进行权限控制访问时,只需进行两处设置,一是在权限表中为这个数据表增加 "增删改查" 四个权限,然后将对应权限添加到角色表中即可。

基于角色的权限控制系统(role-based access control)

2. 实现过程

  2.1 数据库设计

    建立四张表,用户表,角色表,权限表和权限组表。models.py代码如下:

from __future__ import unicode_literals
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=16)
    age = models.IntegerField()
    role = models.ForeignKey(to='Role')
    def __str__(self):
        return self.name

class Role(models.Model):
    title = models.CharField(max_length=32)
    permission = models.ManyToManyField(to='Permission')
    def __str__(self):
        return self.title

class Permission(models.Model):
    title = models.CharField(max_length=32)
    url = models.CharField(max_length=32)
    action = models.CharField(max_length=32)
    group = models.ForeignKey(to='PermissionGroup')
    def __str__(self):
        return self.title

class PermissionGroup(models.Model):
    title = models.CharField(max_length=32)
    def __str__(self):
        return self.title
models.py

相关文章:

  • 2021-05-30
  • 2021-06-03
  • 2021-04-23
  • 2021-10-21
  • 2022-12-23
  • 2022-02-17
猜你喜欢
  • 2021-05-25
  • 2021-06-02
  • 2021-07-02
  • 2022-01-28
  • 2022-03-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案