我所理解的权限管理设计

    一套完整的系统,必然是会涉及到权限的管理,经过这几年来的学习,我把我所理解的权限设计书写如下,对自己也是一个提高,对别人兴许也有一些帮助。

   首先我们要先了解下几个名词。

   名词:

   用户:也就是登陆的用户

   角色:也就是一类人的统称,也是一系列功能集合的拥有者。

   功能:也就是说具体的一项在菜单上显示的,例如navicat下文件模块下的新建连接,打开连接,关闭连接,导出连接都是功能。

   模块:就是一系列功能的分类。例如Navicat下的文件模块,查看模块,工具模块,帮助模块等。

  理清关系:

  然后我们需要理清他们之间的关系。

  一个人拥有多个角色,一个角色可以被多个人拥有。也就是多对多的关系。

 一个角色拥有多个功能,一个功能又可以被多个角色拥有。也就是对对多的关系。

 一个功能只能属于一个模块,一个模块可以拥有多个功能。也就是多对一的关系。

  表设计:

理清了他们之间的关系,那么好,我们就用表来存储他们之间的关系。我们需要用户表、角色表、功能表模块表,然后还需要存储用户与角色关系的一张表,还有角色拥有功能的一张表,为了存储这种多对多的关系,新建一张表是必须的,功能与模块可以在一张表中进行存储。这样我们也就是需要了五张表。

  权限系统的使用:

那么接下来我们怎么应用到程序开发中呢???

我们可以这样做、首先我们用户登录系统,获得登录账户和用户的角色,根据所登录的角色我们可以查询角色下所拥有的的功能,这是一定能够做到的。接下来我们怎么把模块与角色关联上呢??那么我给提供一种思路:我们根据角色查询到功能,那么自然我们也就等到了功能和所对应的的模块,然后我们在用distinct可以去重得到模块,这样也就关联上了角色,当然可以把查询结果看成一张新表T1(T1仅仅记录了功能模块和角色下的功能)。然后模块下的功能我们可以在刚查询的功能模块表中也就是T1表,把功能的模块Id跟我们刚查询到的模块id相等的查询出来就可以了。这样就可以吧权限系统给完成了。

猜你喜欢

转载自blog.csdn.net/xblywl/article/details/54024402