我们团队有一个内部工具,一直是团队成员使用,由于这个工具是命令行格式,多少有点不方便,后来我想,要么给做一个UI来调用这个工具吧,于是操刀用python+flask+bootstrap实现了,确实方便了很多,团队同事也很喜欢。
后来其他团队同事看到了这个工具,也觉得很不错,想让他们的团队成员也一起使用,那么新的需求就来了,不同团队的同事,他们看到的用户界面应该是不一样的,也就是我们常说的基于用户角色的权限控制(Role Based Access Control),这一块后来我也花了一点时间做出来了,虽然不是完美,但是应付内部使用足够。
在这个教程里面,我把这一块的实现再略微做了一些简化,给自己将来留作参考,如果有其他人觉得有用,请随意取用。
在这个教程中,我定义了三个角色
管理员具有所有权限,能查看所有的菜单,包括管理员菜单,支持部菜单,销售部菜单,如下:
支持部成员能看到个人菜单和支持部的功能菜单。如下图
本文所提及的所有源代码已经上传到了
https://github.com/junfhu/rbacdemo
源代码结构如下
[root@localhost myproject]# tree
.
├── db_design.txt
├── run.py
└── tool_portal
├── init.py
├── model.py
├── static
│ ├── css
│ │ ├── bootstrap.min.css
│ │ └── signin.css
│ └── js
│ ├── bootstrap.min.js
│ └── jquery-3.4.1.min.js
├── templates
│ ├── index.html
│ ├── layout.html
│ └── login
│ ├── change_password.html
│ ├── login.html
│ ├── role_add.html
│ ├── role_edit.html
│ ├── role_management.html
│ ├── user_add.html
│ └── user_management.html
├── users.sqlite
└── views
├── init.py
└── login.py
因为本人非专业码农,这个也纯属内部工具,不足很多,如果不合意,请多多指正,不要踢我:)。