权限管理顾名思义,其实就是角色控制权限的系统,每个用户对应一个角色,每个角色有对应的权限,比如公司会有CEO,总监,销售经理,销售员,每个人的权限都不一样,那我们给他展示的url也都不同
一、首先创建项目,再创建一个名为rbac的app
修改配置文件settings,将css以及js、img等放到static文件夹下
二、表结构设计
设计表:
创建五个类,七张表:
菜单表,权限组,权限表,用户表,角色表,
角色表和权限表是多对多的关系(一个角色可以有多个权限,一个权限可以对应多个角色)
用户表和角色表是多对多的关系(一个用户可以有多个角色,一个角色有多个用户)
models.py
我们一般是先看到的是列表页面,在这个页面上是否显示添加,是否显示编辑,是否显示删除,都是需要判断的, 有无添加权限,有无删除权限,有无编辑权限,我们可以给每一个url一个代号,将代号取出来放在一个列表里面
把这个字典存到session中当你访问页面的时候我就知道你有什么权限一个url对应一个code 多个url对应一个组.
三、通过Django-admin录入数据
先创建一个超级用户:python3 manage.py createsuperuser
用户名:root
密码:a123456
在admin.py中做如下配置:
models.py中做如下配置,就可以在添加的时候显示中文了。
四、编写登录
利用Django的中间件进行控制,没有登录的用户不能直接访问内部的url,而且只能访问admin,login,index这三个url,将其设置为白名单,用户登录成功后,将用户信息方法哦session里边,进行权限访问时去session里边读取,如果有的话进行url跳转,如果没有的话返回‘’无权访问‘’
1.在settings内设置白名单:
2.编写中间件控制时,必须继承MiddlewareMixin这个类
网友评论