RBAC权限系统

通过角色管理权限,而不是通过员工管理权限的系统

  • 先在Django项目中新建一个app专门管理权限
    RBAC权限系统_第1张图片
    告诉Django项目多了一个app
    RBAC权限系统_第2张图片
  • 在新建的app下面新建表
from django.db import models

# Create your models here.

class Permission(models.Model):
    title = models.CharField(max_length=32)  # 这个url是做什么的
    url = models.CharField(max_length=32)  # 如果能有这个权限,就能访问这个url,所以用url来区分权限

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    role = models.ManyToManyField(to='Role')  # 用户查看职位情况比较多

# 职位表
class Role(models.Model):
    title = models.CharField(max_length=32)
    permissions = models.ManyToManyField(to='Permission')  # 职位查看权限比较多

连接数据库新建表
RBAC权限系统_第3张图片

  • 使用Django的admin来对以上的表增加数据。
    首先在admin中注册表
    RBAC权限系统_第4张图片
    效果
    RBAC权限系统_第5张图片
    由于admin展示表时,只显示第一个字段,如需自定制一个展示的字段
    RBAC权限系统_第6张图片

  • 接下来需要对刚刚增加的用户权限进行设置,
    由于有某个权限就能访问某个url,于是在Django流程中的中间件的process_request的方法中对请求做判断。
    Django流程如下
    RBAC权限系统_第7张图片
    具体实现思路
    RBAC权限系统_第8张图片

具体代码分析
定义中间件,第一种情况在白名单中的url,可以直接通过。第二种情况是如果url在该网页的session中的键的值中,也可以访问,否则回复没有访问权限,以下是两种情况的过程。
RBAC权限系统_第9张图片

你可能感兴趣的:(前端)