这是本人在学习的过程当中搭建学习的框架,若是对你有所帮助那再好不过。若是您有发现错误,请告知我,我会第一时间修改。
知其然,知其因此然,并不是重复的造轮子。由于这段时间我发现,本身闷好久写出来的代码,再去看看别人的,会有种恍然大悟的感受。不是只会用,而不知道为何要这样用。
真的,只看不敲,老是学不会。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
我这里主要涉及七个表,四个数据表,三个关联表。
为何这样设计,我以为可能这是大多数系统的需求。
1.用户和角色多对多,一个用户能够拥有多个角色,否则设计角色就没有了意义,实际可能一我的身兼数职。
2.能够直接给用户授予或取消授予某个权限。这个可能会有人以为不必,因此若是不涉及这个,那就是五个表。可是我这里保留,由于不少状况下,这是很正常的需求。
3.菜单能够无限级别,根据实际需求,修改系统配置参数。工具
ObjectID
、Remark
、Status
、CreatedBy
、CreatedTime
、ModifiedBy
、ModifiedTime
、Sort
是默认字段。学习
- 若是用户数据量大的话,实际这个表只须要保留
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 |
- 对角色的分类,好比管理员、普通用户等。
- 角色用户多对多 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 |
- 菜单表 是一开始设计好后,改动最多的一个表。后续在开发过程当中增长了
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一开始我是叫菜单按钮表的,我计划是查询、新增编辑删除、其余权限这样控制,但后来发现这样很差,因此全都分开,每一个方法都要记录。固然为了方便,通用的方法,在增长菜单的时候会自动添加上。
- 菜单权限项菜单是多对一关系
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 |
好比一个角色有用某菜单下的查询和删除权限,那么这个表应该是具备两条记录的。开发工具
HavePermission
记录该用户是 是否有权限:0-无权限;1-有权限
后续处理的时候,要从获取的权限记录中排除直接无权限的记录,增长有权限的。测试
其实网上不少关于权限的文章,以前本身再看的时候,老是以为迷迷糊糊,因此最后打算本身动手作。到作完的时候,才有所理解。我也不知道我这里叙述的是否是不清楚或者设计的是否合理,若是您以为有问题,请告知我,我会当即改正!
切勿眼高手低,动手敲,像Power Design我也是第一次用,也是第一次用MarkDown写博客。
此框架能够快速搭建应用,T4模板生成代码,适合学习使用。若有问题,请与我联系.net
Demo地址:http://app.guoddy.com
源代码地址:https://github.com/jellydong/LJDAPP 数据并不会真实保存,设定的为测试模式,因此免登陆。