基于ASP.Net Core开发的一套通用后台框架

基于ASP.Net Core开发一套通用后台框架

写在前面

这是本人在学习的过程当中搭建学习的框架,若是对你有所帮助那再好不过。若是您有发现错误,请告知我,我会第一时间修改。
知其然,知其因此然,并不是重复的造轮子。由于这段时间我发现,本身闷好久写出来的代码,再去看看别人的,会有种恍然大悟的感受。不是只会用,而不知道为何要这样用。
真的,只看不敲,老是学不会。git

Demo地址:http://app.guoddy.com
源代码地址:https://github.com/jellydong/LJDAPP
数据并不会真实保存,设定的为测试模式,因此免登陆。github

开发工具

1.Visual Studio 2019
2.SQL Server 2017
3.Power Designapp

整体效果

主页框架

主页
菜单管理
菜单管理
)
角色管理及权限配置asp.net

菜单管理

权限设计&Why

权限

我这里主要涉及七个表,四个数据表,三个关联表。
为何这样设计,我以为可能这是大多数系统的需求。
1.用户和角色多对多,一个用户能够拥有多个角色,否则设计角色就没有了意义,实际可能一我的身兼数职。
2.能够直接给用户授予或取消授予某个权限。这个可能会有人以为不必,因此若是不涉及这个,那就是五个表。可是我这里保留,由于不少状况下,这是很正常的需求。
3.菜单能够无限级别,根据实际需求,修改系统配置参数。工具

详细说明

ObjectIDRemarkStatusCreatedByCreatedTimeModifiedByModifiedTimeSort是默认字段。学习

SysUserInfo用户表
  • 若是用户数据量大的话,实际这个表只须要保留ObjectIDULoginNameULoginPWD就能够了,这样能够提升速度,不必把全部信息都保存起来。
  • 用户和角色多对多 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 Email nvarchar(50)
UQQ QQ 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菜单表
  • 菜单表 是一开始设计好后,改动最多的一个表。后续在开发过程当中增长了IsLastHierarchy;去除了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模板生成代码,适合学习使用。若有问题,请与我联系.net

Demo地址:http://app.guoddy.com
源代码地址:https://github.com/jellydong/LJDAPP 数据并不会真实保存,设定的为测试模式,因此免登陆。

相关文章
相关标签/搜索