1)本项目是一个权限管理系统,其目的就是将Web应用中不同页面的功能(也就是页面中的按钮),
比如 “新增”、“修改”、“删除”、“查询”、“审核”等进行权限控制,
只有给用户设置了相应的权限才能使用对应的功能(即点击这个按钮),
否则按钮将是灰色的,无法操作,效果如下图所示:
有权限时按钮可用:
无权限时按钮是灰色不可用的状态:
设置权限的页面如下:
这里既可以针对单个用户设置权限,也可以针对部门设置权限,
如果既对部门设置了权限,也对该部门下的单个用户设置了权限,则取用户的权限,忽略所属部门的权限。
2)为了将关注点放在技术实现上,而不是业务设计上,我们对表的设计也尽可能的做了简化,
只包含几个关键的字段就可以了,防止分散注意力,系统要实现的功能描述如下:
1.部门的新增修改作废。
2.用户的新增修改锁定。
3.用户权限的设置。
4.日志的记录和查询。
3)对应的表结构如下:
部门表(t_dept):
字段名 | 类型 | 说明 |
dept_id | int | 部门编号(主键,自增) |
dept_name | varchar(10) | 部门名称 |
is_valid | smallint | 1:有效(默认),0:作废 |
create_time | datetime | 创建时间 |
modify_time | datetime | 修改时间 |
用户表(t_user)
字段名 | 类型 | 说明 |
user_id | int | 用户编号(主键,自增) |
user_name | varchar(10) | 用户名称 |
mobile | varchar(15) | 联系电话 |
dept_id | int | 所属部门编号 |
dept_name | varchar(10) | 所属部门名称 |
is_valid | smallint | 1:有效,0:锁定 |
create_time | datetime | 创建时间 |
modify_time | datetime | 修改时间 |
权限表(t_auth)
字段名 | 类型 | 说明 |
auth_id | int | 权限编号(主键,自增) |
target_type | smallint | 授权类型 1:部门,2:用户 |
target_id | int | 用户/部门编号 |
func_code | varchar(50) | 功能代码 |
create_time | datetime | 创建时间 |
modify_time | datetime | 修改时间 |
日志表(t_log)
字段名 | 类型 | 说明 |
log_id | int | 日志编号(主键,自增) |
user_id | int | 操作人编号 |
user_name | varchar(10) | 操作人名字 |
bat_no | varchar(50) | 批次号(GUID字符串) |
table_name | varchar(10) | 表名称 |
table_data | varchar(500) | 表数据 |
log_time | datetime | 记录时间 |
备注:日志表的作用是在表的字段值发生变化时候将变化前的值和变化后的值以json的格式记录下来(以行为单位记录),
新增时记录1条数据,修改时候记录2条数据(分别是修改前的数据和修改后的数据,这两条数据的批次号是一样的。),
以供后续追踪数据的变化,而且能追踪是哪个用户做的操作。
在MySQL数据库中将上面表的定义建立到数据库,数据库的名称为 "auth_manage"。
.net5 core razor项目实战系列之一:项目要实现的功能及对应的数据库设计
原文:https://www.cnblogs.com/pfm33/p/14723641.html