`
eyexiaobo
  • 浏览: 26383 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于用户组和权限的表结构设计

阅读更多

      对于一个有N个管理模块的WEB后台程序,如何为管理员分配权限,又如何在表中体现出来,可能每个人都有自己的实现过程。我作为一个菜鸟,搜集了一些资料,在这里做一下整理。
     前题:五个模块;两个组;几个用户。权限分配。
     我记得我第一次做这个的时候,当然网站比较简单。一张表搞定,用USER_TYPE区分1234为不同的身份组(组的字典表都没有做,程序中用注释体现 ),然后跟着五个字段,由0和1表示这个家伙有没有管理权限。一切按着需求来,0和1的标识对于一个小网站来说已经够用了,其实属于一个假的权限指派,结果大家都想的到,因为对于一个用户来讲他只有可见或不可见两个层面,而不存在可管理不可管理的真实权限。当然BOSS不知道,而我为了防止敲URL地址直接访问,不得不在每个页面都做验证。虽说骗过了BOSS,真正悲剧的在于以后模块的越来越多,每加一个模块我就得跟加一个字段,这应该就是最让人无法忍受的地方了。
     简单归简单,简单到无脑的设计。缺陷也很致命:

  • 随着功能的增加而增加表示权限的字段,DBA看见估计已经哭的不成人样了。
  • 每个管理员对于增删改查等操作根本无法做出细化的权限分配。
      对于这个加字段的方法,我想可以用一个字段,里面存放JSON数据字符串而表示,这样在存取的时候多一步解析,看起来“完美”的解决了这个随着模块的增加而加字段的问题。麻烦归麻烦点,总体还能正常工作。毕竟是权限要求细化程度不高的小站。而哪一天BOSS说给我把谁谁变成哪个组,要哪些管理权限,只能看,不能增加不能删除。好吧,还好,涉及用户不多,我在网页上多做判断好了,把增加和删除不显示出来。看起来我又挺过去了。
     但这总归不是办法,我明白了这个权限表设计的只能算是失败的。
     怎么样的设计才是完美的呢?
     回到需求上来,几个模块,几个组,一批用户。
     权限针对的管理对象是模块,而一个模块最少需要四种管理手段,即传统的增删改查。一个组拥有这个模块的所有仅限,另一个组只拥有该模块的查看浏览权限。如何设计?
     好在我找到了比较合适的方法。权限表的设计由模块做为对象。
     组ID,模块ID,ADD,MODI,DEL等几个主要字段,0和1区分是否有管理权限。用户只要指定组,就获取了某一种管理权限。这样的设计在后期增加模块的情况下只需要为某个组增加几个数据记录而已,为组ID做个索引,还是有速度优化空间的。而更大的好处就是权限被细化了。看起来很完美的解决方案。
     只是看起来。
     如果哪天为了增加个临时体验帐号。如何是好?如果哪天组被删除掉了,如何是好?
     我擦,组都没了,我的用户都没权限了。
     失败了?显然是的。
     简单的改动一下,把组ID换成USER_ID,好了,组没了就没了吧。把组又细化到人身上,人对于模块拥有哪些权限,有五个模块就会出现关于这个USER_ID的五条记录,一个矩阵。说回来,这个组怎么办?
     组只是一个抽象的概念,如果在网页上表示这么个矩阵:
     模块一:checkbox, checkbox, checkbox
     模块二:checkbox, checkbox, checkbox
     模块三:checkbox, checkbox, checkbox
     模块四:checkbox, checkbox, checkbox
     对于组的权限只是一个简单的JS效果,把某些CHECKBOX搞成选中状态就OK了。这样可以做到非常人性化,每个模块的权限可以加上两个日期,起始日期,结束日期,临时VIP就出来了,月会员制。
     勾选了组,自动选中一些CHECKBOX,我再把CHECKBOX全点掉,这货属于管理员组,但没有一点权限。谁说同一个组的人权限必须相同呢?
2
2
分享到:
评论

相关推荐

    权限设计(包括表结构)

    权限设计(包括表结构) 权限设计是任何系统不可或缺的一部分,对于系统的正常运作和管理起着至关重要的作用。权限设计的主要目标是确保系统中的每个用户都拥有适当的权限,从而确保系统的安全和稳定。 permissions...

    多种权限表的设计(数据库设计)

    - **系统结构**:分为组权限管理、角色权限管理、用户权限管理、组织管理和操作日志管理五部分,各部分间的关系复杂而有序,确保权限分配的准确性和安全性。 2. **数据结构设计** 数据库设计的关键在于构建合理...

    权限管理模块的表结构设计

    在IT行业中,权限管理是系统安全的...通过合理规划和设计,可以有效地管理用户访问权限,保障系统的稳定和安全。在实际应用中,还需要考虑到权限的继承、权限的动态更新以及权限的审计等功能,以满足不同场景的需求。

    用户表角色权限表的设计

    设计时,会涉及到复杂的关联关系,通常需要建立多个关联表来处理多对多关系,如用户权限表、用户角色表、角色权限表、组权限表、组角色表和用户组关联表等。这些表的结构设计直接影响到权限管理的效率和灵活性。 ...

    角色权限表设计

    初步估计一下,本系统至少需要十张表,分别为:权限表、用户表、角色表、组表、用户权限关联表、用户角色关联表、角色权限关联表、组权限关联表、组角色关联表、用户属组关联表。 权限管理是应用系统中比较棘手的...

    discuz 论坛数据库表结构

    Discuz 论坛数据库表结构共有 53 个数据表,每个表都有其特定的作用和设计理念。在这里,我们将逐一介绍每个表的设计理念和实现细节。 cdb_access 用户权限表 cdb_access 表是用户权限表,用于存储用户的权限信息...

    以用户、组织结构和权限为例,论如何将基于关系型数据库的设计简化

    我们可以将系统功能分解为七个部分:用户登录、用户资料维护、组织结构调整、权限列表和权限组维护、用户和组织关系维护、用户和权限关系维护、组织和权限关系维护。 在设计数据库时,我们可以遵循以下原则: 1. ...

    经典的用户权限管理,数据结构分析设计

    2. **组权限管理**:为了简化权限分配,可以通过创建用户组,将具有相同权限的用户归入同一组,对组进行权限分配。 3. **可扩展性**:权限管理系统应具备高度的可扩展性,能够在不同的业务系统中复用,避免重复开发...

    用户表角色权限表的设计.doc

    通常包括用户表、角色表、权限表和关联表(如用户角色关联表、角色权限关联表、用户组关联表、组角色关联表等)。 - 关联表用于维护多对多关系,例如,用户角色表记录用户与角色的关联,角色权限表记录角色拥有的...

    Gitblit获取用户权限用户组权限.rar

    总的来说,这个项目提供了一种高效的方法,帮助Gitblit管理员管理和理解他们的用户权限和用户组权限结构。通过自动化导出到Excel,可以更直观地查看和分析权限配置,从而优化团队协作和资源管理。

    数据库权限管理表设计的文章

    用户组权限关联表则用于关联用户组与权限: ```sql CREATE TABLE groupPermission ( groupId int(10) unsigned NOT NULL, permissionId int(10) unsigned NOT NULL, PRIMARY KEY (groupId, permissionId) ); ```...

    泛微e-cology数据库表结构设计

    泛微e-cology是一款专业的协同办公自动化系统,其数据库表结构设计对于系统二次开发和自学者来说至关重要。本文档主要涵盖了泛微e-cology7.0版本的数据库表结构,虽然与最新的8.0版本存在细微差异,但基本结构相似,...

    基于角色的权限管理数据库设计

    在基于角色的权限管理系统中,除了上述的基本表之外,还需要设计一些关联表来表示实体之间的关系,如用户与角色的关系、角色与权限的关系等。 ##### 用户与角色关联表 (RBAC_User_Role) 此表用于记录用户所拥有的...

    经典的用户权限管理,数据结构分析设计

    2. **数据模型设计**:定义用户、角色和权限的数据结构,可能使用数据库表来存储这些信息,设计合适的关联关系。 3. **权限分配算法**:设计一种算法来决定用户可以访问哪些数据,这可能涉及到多层嵌套的权限和复杂...

    [源码]用户组权限设置

    本文将详细阐述如何进行用户组权限设置,特别是基于数据库的权限配置和用户分组,以及如何实现无限级别的权限分级。这一过程通常涉及多方面的技术和策略,包括身份验证、授权、角色管理和数据库操作。 首先,我们要...

    系统的权限管理体系数据库表结构设计.doc

    在设计一个系统的权限管理体系时,数据库表结构的设计是至关重要的,因为它决定了权限管理的灵活性、安全性和可扩展性。...通过合理的表结构设计,可以确保系统的安全性,提高用户体验,便于系统的长期维护和升级。

    权限管理中的表设计方案

    在IT行业中,权限管理是系统安全的关键组成部分,尤其在设计数据库表结构时,合理的权限设计方案至关重要。本方案针对初学者,旨在提供一个基础的、能够限制窗口控件访问权限的模型。 首先,我们有四张核心表格:...

    数据库中用户权限设计

    - **ActionGroup表**:使用`groupid`和`action`字段关联管理组表和权限表,确保即使权限ID发生变化,也不会影响权限的正确分配。 - **MasterGroup表**:同样使用`groupid`字段关联管理组表和人员表,以确定哪些...

Global site tag (gtag.js) - Google Analytics