五表权限

设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。

大致用到5张表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。

各表的大体表结构如下:

1、用户表(UserInfo):Id、UserName、UserPwd

2、角色表(RoleInfo):Id、RoleName

3、菜单表(MenuInfo):Id、MenuName

4、用户角色表(UserRole):Id、UserId、RoleId

5、角色菜单表(RoleMenu):Id、RoleId、MenuId

最关键的地方是,某个用户登录时,如何查找该用户的菜单权限?其实一条语句即可搞定:

假如用户的用户名为Arthur,则他的菜单权限查询如下:

Select m.Id,m.MenuName from MenuInfo m ,UserInfo u, UserRole ur, RoleMenu rm Where m.Id = rm.MenuId and ur.RoleId = rm.RoleId and ur.UserId = u.Id and u.UserName = ‘Arthur’

任何权限的需求,都是为广义的用户分配角色,角色拥有广义的权限。角色是最重要的中枢,隐藏做幕后黑手,从不出现在业务代码里,用行话说就是解除了用户和权限的直接耦合。

角色把用户抽象化了,几百个用户变成成几个角色,用户->角色->权限写成通用判断权限的方法:currUser.IsHave(xx权限)。核心就是一个sql联表查询语句,查询条件为用户id。

例如:
部门权限:部门也是一种用户,建立 部门表、部门角色表。通用权限方法里加上 当前部门->部门所属角色->权限
职位权限:职位也是一种用户,建立职位表、职位角色表,同上
菜单:也是一种权限,建立 菜单表、角色菜单表,就把菜单纳入了权限管理。通用权限方法里加上 角色列表->权限、菜单

使用Microsoft SQL Server应用代码构建如下:

1、用户信息表:

create table employee
(
userid varchar(50) not null, --用户ID
username varchar(100), --用户名
userpassword varchar(100), --密码




)
alter table employee --主键
add constraint pk_employee_userid primary key (userid)
 2、角色表:

create table role
(
roleid varchar(50) not null, --角色Id
rolename varchar(100), --角色名称
)
alter table tole --主键
add constraint pk_role_roleid primary key (roleid)
  3、权限菜单表

create table popedom
(
popedomid int identity(1,1) not null, --权限Id
popedomname varchar(100), --权限名称
popedomfatherid int, --权限父ID
popedomurl varchar(100) --树的连接路径



er table popedom --主键
add constraint PK_popedom primary key (popedomid)
  添加数据如
insert into popedom values(‘我的办公桌’,0,’’)
insert into popedom values(‘电子邮箱’,1,’…/mail/EmaiolManage.aspx’)
(添加数据的原则是一级接点的popedomfatherid 为0,如果是(我的办公桌)下面的接点,它们的popedomfatherid为(我的办公桌)的主键)

4、用户与角色关系表

create table user_role
(
connectionid int identity(1,1) not null, --关系ID
userid varchar(50) not null, --管理员表ID
roleid varchar(50) not null --角色Id
)
alter table user_role --主键
add constraint PK_admin_role primary key(connectionid)
  5、角色与权限关系表

create table role_popedom --角色与权限表
(
connectionid int identity(1,1), --关系Id
roleid varchar(50) not null, --角色ID
popedomid int not null, --权限Id
popedom int --权限 (1为可用,2为不可用)
)
alter table role_popedom --主键
add constraint PK_role_popedom primary key(connectionid) --主键

6、五表之间的关联

在这里插入图片描述

`

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值