本文主要是介绍用户,角色,权限三者的关系?让你设计用户权限系统,你会设计几张表?为什么要这样设计?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1. 用户,角色,权限
2. 权限系统实现的两种方案
2.1 用户+权限实现权限系统
2.2 用户+角色+权限实现权限系统
1. 用户,角色,权限
用户:很简单的一个词,你做出来一个产品,或者一个网站,别人浏览使用你的产品,那么他就是你的用户。
角色:角色是用户更高一层的抽象。刚才我们说到了,所有人都可以使用户,但在众多用户中,我们可以对他们进行细粒度的划分,例如对大多数人都只是普通的用户,有少部分人不仅是用户,也拥有管理员身份。这只是简单的划分,例如一个复杂的系统网上购物系统中,有普通用户,有VIP高级用户,有超级管理员,有货物供应商,它们所对应着各自不同的权限。
权限:当然,既然是一个产品,那么它就是给人用的,但对于不同的人,不可能给出相同的权限,我们不会让普通用户拥有管理员的权限,简单来说,用户通常只有查看的权利,没有增删改的权利,这就是权限最直观的体现。
用户和角色多对多关系:一个管理员,他既有用户的角色身份,又有管理员的角色身份;反之,一个管理员,也不一定只对应一个用户,多个用户都可以是管理员。
角色和权限多对多关系:一个管理员,他既有普通用户的权限,又有普通用户没有的管理员权限;反之,多个人都可以拥有同一个相同的权限。
2. 权限系统实现的两种方案
2.1 用户+权限实现权限系统
在有些小的项目中,我们通常会发现关于用户权限的设计非常简单,通常都是设计一个权限表列出各种权限,然后就是用户表,用户表中设计一个权限字段关联权限表的主键,从而达到设计用户权限的目的。
这种实现权限的方式优点就是非常简单,只需要两张表就可以完成,程序代码也非常简单,难度较低;
缺点就是用户操作不便,权限关系比较乱,当然这只是相对而言,我们一会会拿它和方案二来做对比;
2.2 用户+角色+权限实现权限系统
这种方式是比较广泛使用的权限设计系统,它需要设计五张表,分别是
t1:用户表;
t2:角色表;
t3:权限表;
t4:用户和角色关联表;
t5:角色和权限关联表;
第二种方案要比第一种方案在编码层面更复杂,需要用到5张表,并需要用到多表查询,但是却非常利于系统对各个用户的权限控制,加入角色表我们可以将所有的用户划分为不同的角色,让权限关系更加清晰,当我们需要添加新的用户时,只需要让他与角色表相关联,然后就可以通过角色与权限关联表确认当前用户都具有哪些权限,程序的健壮性和可扩展性更强。
这篇关于用户,角色,权限三者的关系?让你设计用户权限系统,你会设计几张表?为什么要这样设计?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!