An authentication and authority management system based on Flask.
注意,只实现了基础的功能,有些写法比较初级(如未使用蓝图,数据库操作不够模块化),且缺少安全细节(如口令存储、防范各种网页攻击等),后期有空再加。
建议配合 https://github.com/johnsonwangzs/TestFlask 食用(使用了Flask蓝图等高级用法,以及Flask-Login、Flask-wtforms等扩展)。
- 将所有文件下载并保存为一个Python项目。
- 安装Flask和Flash-Login。
- 将db目录下的createDB.sql作为MySQL脚本导入。
- 创建一个数据库用户,根据数据库具体配置修改app.py中用于连接数据库的常量。
- 在app.py下运行程序,浏览器打开http://127.0.0.1:5000。
- Enjoy yourself!
注:部分功能待实现。
根据用户id识别用户的身份:
- 管理员
- 普通用户
点击登出按钮进行登出。
- Web(HTML+JavaScript+Bootstrap)
- Flask+Python
- MySQL
source D://CODE/Python//Code//AuthenticationAndAuthorityManagementSystem//db//createDB.sql;
source D://CODE/Python//Code//AuthenticationAndAuthorityManagementSystem//db//dropDB.sql;
用户账号表user_login(用户认证)——用于用户的登录(认证)
- user_id——用户自己不能修改
- password
用户表user_info(用户的基本信息)——保存用户的基本信息
- user_id
- name
- nickname
- phone
- description
组表group_info(组信息)——多个用户可能属于一个组
- group_id
- group_name——财务处
- group_description
角色表role_info(角色信息)——同一个角色可能对应多个用户
- role_id
- role_name——CEO
- role_level——级别
- role_description
应用表app_info(应用信息)
- app_id
- app_name——报销系统
- app_description
用户权限表user_authority(用户的权限信息)——用户属于唯一的组,具有唯一的角色
- user_id
- group_id
- role_id
应用-组许可规则app_group_rule——决定特定组可以使用某个应用
- app_group_rule_id
- app_id
- group_id
应用-角色许可规则app_role_rule——决定特定角色可以使用某个应用
- app_role_rule_id
- app_id
- role_id
应用-用户许可规则app_user_rule——决定特定用户可以使用某个应用
- app_user_rule_id
- app_id
- user_id
文件-组许可规则file_group_rule——决定特定组对某个文件的访问权限
- file_group_rule_id
- file_id
- group_id
- rule——读/写/修改等权限
文件-角色许可规则file_role_rule——决定特定角色对某个文件的访问权限
- file_role_rule_id
- file_id
- role_id
- rule
文件-用户许可规则file_user_rule——决定特定用户对某个文件的访问权限
- file_user_rule_id
- dile_id
- user_id
- rule
应用规则决定特定组(app_group_rule)、特定角色(app_role_rule)、特定用户(app_user_rule)能够使用某个应用。
文件规则决定特定组、特定角色、特定用户对某项文件资源的访问权限。
在访问文件前,用户需要先对用于访问文件的应用具备相应权限。