GitHub 项目地址 https://github.com/wkunzhi/CRM-Manage
【1】将rbac组件拷贝到项目中
【2】 将rbac/migrations中的数据库记录删除(如果有的话)
【3】 业务代码中用户表结构设计
业务表结构中的用户表需要和rbac中的用户表有继承关系如:
1 | class UserInfo(models.Model): |
1 | # app01/models.py |
【注意】这种继承关系时如果子继承父中的forekey时,父关联不要用''号
【4】 将业务系统用户表的路径写到配置文件中
1 | '''setting.py''' |
【5】 业务逻辑开发
- 将所有路由都设一个name【必须】才会反向生成url和粒度控制按钮
【6】 权限录入
- 在url中添加rbac的路由分发【必须设置namespace=’rbac’】
1 | # 根路由加上如下代码 |
- rbac提供的地址进行操作初始化
作用 | 地址 |
---|---|
菜单管理 | /rbac/menu/list |
角色管理 | /rbac/role/list |
权限分配 | /rbac/distribute/permissions |
【7】 编写用户登录的逻辑
- 例:【必须做权限初始化】
1
2
3
4
5
6
7
8
9
10def login(request):
if request.method == 'GET':
return render(request, 'login.html')
...校验登录...
'''利用rbac组件登录成功,初始化用户权限'''
init_permission(user_obj, request)
return redirect('/index/')
【8】 相关配置 setting.py
1 | # 业务中用户表需要关联 |
【9】 权限校验中间件
- setting中配置引入中间件
1 | rbac.middlewares.rbac.RbacMiddleware, |
- setting中加入app
1 | 'rbac.apps.RbacConfig', |
【10】 粒度到按钮控制
利用rbac中写好的filter进行
has_permission 管道符
1 | {% if request|has_permission:'user_del' %}{% endif %} |
总结
- 用户登录+用户首页+用户注销 业务逻辑
- 项目业务逻辑开发
注意:开发适合灵活的去设置 layout.html 中的两个inclusion_tag 测试的时候注释掉即可 - 权限信息录入
- 配置文件整合