基于ASP.Net Core开发的一套通用后台框架
基于asp.net core开发一套通用后台框架
写在前面
这是本人在学习的过程中搭建学习的框架,如果对你有所帮助那再好不过。如果您有发现错误,请告知我,我会第一时间修改。
知其然,知其所以然,并非重复的造*。因为这段时间我发现,自己闷很久写出来的代码,再去看看别人的,会有种恍然大悟的感觉。不是只会用,而不知道为什么要这样用。
真的,只看不敲,总是学不会。
demo地址:
源代码地址:https://github.com/jellydong/ljdapp
数据并不会真实保存,设定的为测试模式,所以免登录。
开发工具
1.visual studio 2019
2.sql server 2017
3.power design
总体效果
主页
菜单管理
)
角色管理及权限配置
权限设计&why
我这里主要涉及七个表,四个数据表,三个关联表。
为什么这样设计,我觉得可能这是大多数系统的需求。
1.用户和角色多对多,一个用户可以拥有多个角色,不然设计角色就没有了意义,实际可能一个人身兼数职。
2.可以直接给用户授予或取消授予某个权限。这个可能会有人觉得没必要,所以如果不涉及这个,那就是五个表。但是我这里保留,因为很多情况下,这是很正常的需求。
3.菜单可以无限级别,根据实际需求,修改系统配置参数。
详细说明
objectid
、remark
、status
、createdby
、createdtime
、modifiedby
、modifiedtime
、sort
是默认字段。
sysuserinfo用户表
- 如果用户数据量大的话,实际这个表只需要保留
objectid
、uloginname
、uloginpwd
就可以了,这样可以提高速度,没必要把所有信息都保存起来。- 用户和角色多对多 r_sysuserinfo_sysrole
- 用户和权限项多对多(直接授权或禁止) r_userpermissions
name | 说明 | 类型 | 主键 |
---|---|---|---|
objectid | 主键 | nvarchar(50) | true |
uloginname | 用户名 | nvarchar(20) | |
uloginpwd | 密码 | nvarchar(50) | |
urealname | 真实姓名 | nvarchar(10) | |
utelphone | 电话 | nvarchar(20) | |
umobile | 手机号 | nvarchar(11) | |
uemail | nvarchar(50) | ||
uqq | nvarchar(20) | ||
ugender | 性别:0-女;1-男;2-保密 | int | |
udepid | 所属部门 | nvarchar(50) | |
remark | 备注 | nvarchar(500) | |
status | 状态:0-启用;1-禁用 | int | |
createdby | 创建人 | nvarchar(50) | |
createdtime | 创建时间 | datetime | |
modifiedby | 修改人 | nvarchar(50) | |
modifiedtime | 修改时间 | datetime | |
sort | 排序值 | int |
sysrole角色表
- 对角色的分类,比如管理员、普通用户等。
- 角色用户多对多 r_sysuserinfo_sysrole
- 角色权限多对多 r_rolepermission
name | 说明 | 类型 | 主键 |
---|---|---|---|
objectid | 主键 | nvarchar(50) | true |
rname | 角色名称 | varchar(50) | |
remark | 备注 | nvarchar(500) | |
status | 状态:0-启用;1-禁用 | int | |
createdby | 创建人 | nvarchar(50) | |
createdtime | 创建时间 | datetime | |
modifiedby | 修改人 | nvarchar(50) | |
modifiedtime | 修改时间 | datetime | |
sort | 排序值 | int |
sysmenus菜单表
- 菜单表 是一开始设计好后,改动最多的一个表。后续在开发过程中增加了
islast
、hierarchy
;去除了maction
- islast用来标记是不是最后一级,如果是最后一级我们给自动增加增删改等默认方法。
- hierarchy用来标记层级,前面我们说可以做到无限极,但是通常情况下会是三级,所以这个需要根据实际设定系统参数,维护的时候检查限制即可。
- ismenushow是否作为菜单显示,也就是左侧菜单递归的,因为有部分api不需要作为菜单显示,并且授权的方式也会不一样。
- 菜单角色多对多 r_rolepermission
- 菜单权限项一对多
name | 说明 | 类型 | 主键 |
---|---|---|---|
objectid | 主键 | nvarchar(50) | true |
mname | 名称 | nvarchar(100) | |
murl | url | nvarchar(100) | |
marea | 区域 | nvarchar(100) | |
mcontroller | 控制器 | nvarchar(100) | |
micon | 图标 | nvarchar(100) | |
islast | 是不是最后一级菜单:0-是;1-否 | int | |
ismenushow | 是不是作为菜单显示:0-是;1-否 | int | |
remark | 备注 | nvarchar(500) | |
parentid | 父id | nvarchar(50) | |
status | 状态:0-启用;1-禁用 | int | |
hierarchy | 层级 | int | |
createdby | 创建人 | nvarchar(50) | |
createdtime | 创建时间 | datetime | |
modifiedby | 修改人 | nvarchar(50) | |
modifiedtime | 修改时间 | datetime | |
sort | 排序值 | int |
sysfunction 菜单按钮表 (菜单权限项表)
- sysfunction一开始我是叫菜单按钮表的,我计划是查询、新增编辑删除、其他权限这样控制,但后来发现这样不好,所以全都分开,每个方法都要记录。当然为了方便,通用的方法,在增加菜单的时候会自动添加上。
- 菜单权限项菜单是多对一关系
name | 说明 | 类型 | 主键 |
---|---|---|---|
objectid | 主键 | nvarchar(50) | true |
fname | 名称 | nvarchar(50) | |
ffunction | 方法 | nvarchar(50) | |
ficon | 图标 | nvarchar(50) | |
parentid | 所属菜单 | nvarchar(50) | |
remark | 备注 | nvarchar(500) | |
status | 状态:0-启用;1-禁用 | int | |
createdby | 创建人 | nvarchar(50) | |
createdtime | 创建时间 | datetime | |
modifiedby | 修改人 | nvarchar(50) | |
modifiedtime | 修改时间 | datetime | |
sort | 排序值 | int |
r_sysuserinfo_sysrole用户和角色关联表,记录用户和角色的对应关系。
r_rolepermission 角色菜单权限项关联表。
比如一个角色有用某菜单下的查询和删除权限,那么这个表应该是具有两条记录的。
r_userpermissions 用户菜单权限项关联表。
havepermission
记录该用户是 是否有权限:0-无权限;1-有权限
后续处理的时候,要从获取的权限记录中排除直接无权限的记录,增加有权限的。
总结
其实网上很多关于权限的文章,之前自己再看的时候,总是觉得迷迷糊糊,所以最后打算自己动手做。到做完的时候,才有所理解。我也不知道我这里叙述的是不是不清楚或者设计的是否合理,如果您觉得有问题,请告知我,我会立即改正!
切勿眼高手低,动手敲,像power design我也是第一次用,也是第一次用markdown写博客。
此框架可以快速搭建应用,t4模板生成代码,适合学习使用。如有问题,请与我联系
demo地址:
源代码地址:https://github.com/jellydong/ljdapp
数据并不会真实保存,设定的为测试模式,所以免登录。
推荐阅读
-
[开源] 基于Layui组件封装的后台模版,HG-Layui-UI通用后台管理框架V1.0版
-
基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理
-
【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持
-
一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx
-
基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述
-
使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]
-
基于ASP.Net Core开发的一套通用后台框架
-
基于JFinal的后台业务框架通用模块
-
一种小型后台管理系统通用开发框架中的Cache缓存设计
-
ASP.NET快速开发框架不得不做的几个功能、高大上档次后台管理UI界面