基于ASP.Net Core开发的一套通用后台框架
基于ASP.Net Core开发一套通用后台框架
写在前面
这是本人在学习的过程中搭建学习的框架,如果对你有所帮助那再好不过。如果您有发现错误,请告知我,我会第一时间修改。
知其然,知其所以然,并非重复的造轮子。因为这段时间我发现,自己闷很久写出来的代码,再去看看别人的,会有种恍然大悟的感觉。不是只会用,而不知道为什么要这样用。
真的,只看不敲,总是学不会。
Demo地址:http://app.guoddy.com
源代码地址: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地址:http://app.guoddy.com
源代码地址:https://github.com/jellydong/LJDAPP
数据并不会真实保存,设定的为测试模式,所以免登录。
转载于:https://www.cnblogs.com/jellydong/p/11462192.html
基于ASP.Net Core开发的一套通用后台框架相关推荐
- 基于Citus和ASP.NET Core开发多租户应用
Citus是基于PsotgreSQL的扩展,用于切分PsotgreSQL的数据,非常简单地实现数据"切片(sharp)".如果不使用Citus,则需要开发者自己实现分布式数据访问层 ...
- 基于ASP.NET Core 6.0的整洁架构
背景 最近尝试录制了一个系列视频:<ASP.NET Core 6.0+Vue.js 3 实战开发>,本节是视频内部整洁架构的理论和实战的文字稿.因为在录制之前,我通常会编写完整的文字内容作 ...
- 如何基于asp.net core的Identity框架在mysql上作身份验证处理
首先了解这个概念,我一开始也是理解和掌握基本的概念,再去做程序的开发.Identity框架是微软自己提供,基于.net core平台,可拓展.轻量 级.面向多个数据库的身份验证框架.IdentityS ...
- .NET Conf 2020 - 基于ASP.NET Core构建可热插拔的插件化系统
文章标题:.NET Conf 2020 - 基于ASP.NET Core构建可热插拔的插件化系统 作者:Lamond Lu 项目地址:https://github.com/lamondlu/CoolC ...
- 推荐一本基于ASP.NET Core 3.1的实战来了
第一本基于 ASP.NET Core 3.1 的实战书来了 我脱产花费了一年时间创作书籍<深入浅出 ASP.NET Core>,终于上架了.目前天猫.京东等主流平台均有销售. 这本书是基于 ...
- 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
<ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...
- 基于ASP.NET Core 3.0的ABP v0.21已发布
在微软发布仅仅一个小时后, 基于ASP.NET Core 3.0的ABP v0.21也紧跟着发布了. v0.21没有新功能.它只是升级到稳定的ASP.NET Core 3.0. 查看v0.20发行说明 ...
- 基于ASP.NET Core的模块化设计: 虚拟文件系统
土牛亲自录制的本文介绍视频 Abp中文网(https://cn.abp.io/)提供翻译字幕 基于ASP.NET Core的模块化设计: 虚拟文件系统 简介 创建模块化的应用程序很困难. 构建模块化的 ...
- 基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计)
紧接上一篇<基于Asp.Net Core打造轻量级内部服务治理RPC(一)>文章.本文主要讲解基于Asp.Net Core的远程服务设计和实现. 在上一篇中讲过,服务提供者提供的服务实际上 ...
最新文章
- Xcode调用栈时小图标代表什么意思
- 一问就想不起来的问题,来看看?
- 最常见的208道Java最新面试题及答案(一)
- r语言c5.0要求因子输出,R语言中因子的创建与使用
- SpringCloud Sentinel 熔断降级、热点参数限流、与系统自适应限流介绍与配置
- python代码编辑器、最好_这十大文本/代码编辑器最好用
- 超详细的Engauge Digitizer 软件教程
- 百花开放笑声甜_“开源萌宠”庆六一
- android实现模拟微信调用相机和手机图库更换头像
- 计算机内存改成多少合适,32g内存需要设置虚拟内存吗?32g内存虚拟内存设置多少合适...
- 用Python turtle库 绘制皮卡丘
- python运维主要做什么_运维工程师主要做什么?
- 数学之美--数学大师与漂亮的分形几何学
- Hibernate的多种关系映射(oto、otm、mtm)
- 解决虚拟机中centos7中安装完毕后无法联网显示Server not found如何解决?
- 激光切割机雕刻机桌面打标机打码机点胶机写字机上位机C#源码STM32F407控制板源码
- OpenGL基础(三):三角形
- 使用JavaMail实现收取和回复邮件
- HTML学习知识点大全-----超详细(各种标签使用讲解及案例)
- ipconfig/all命令
热门文章
- Qt5布局管理(2)
- ZOJ-2571 Big String Outspread 模拟
- [转载红鱼儿]kbmmw 开发点滴:kbmMW:Unknown property:indexes
- Java的反射机制 工厂模式综合讲解【转载自51CTO】
- js 默认的参数、可变的参数、变量作用域
- css3学习 之 css选择器(css3 属性选择器)
- Hibernate4一对多关系映射(自身关联)
- Microsoft Visual Studio (VS)2010 常用快捷键大全 便捷开发
- mini2440 之——LED简单控制(裸机) c与汇编
- muduo之EPollPoller