软件系统权限管理

来源:互联网 发布:笨方法学python mobi 编辑:程序博客网 时间:2024/04/30 17:46

软件系统管理权限,就是指一个软件里面,针对数据库的内容,不同的人能操作的程度不一样。比如管理员可以修改和删除数据,而一般的使用人员只能添加或者查看数据。然而,对于一个大型的软件系统来说(这里的大型指的是这个软件系统涉及的东西比较多,使用人群的身份多种多样),此时,对权限控制的好坏,将直接影响这个软件使用的好坏,同时也代表着你是否可以完成这个软件,以及后期运维的成本。


言归正传,写这篇博文的启发来自下面这段链接,本着尊重产权的主张,贴出地址供大家参考,http://www.cnblogs.com/Hedonister/archive/2006/11/21/567383.html。


链接的博文主要给我的启发主要来自于他后面举出的示例,以及数据库的呈现。


通过阅读上面的博文,我的想法则是这样的:

一个软件系统,一定有使用这个系统的人,因此user这块表是肯定存在的,这块表也就存储着用户的各种基本个人信息,并用user_id作为主键。

第一段中提到,既然是大型软件系统,使用人群的身份多种多样,因此设计一个role表,存储着这个软件中涉及到的所有身份,使用role_id作为主键。

前面两个显而易懂,下面才是重点。有了用户,并给予用户身份,那么接下来要做的是什么呢?这里先卖个关子,先联想一下现实生活中的经历。比如,大学里面,你想找教务老师查看你们班全部人的成绩,教务老师肯定鸟都不鸟你;但是,如果是你们班的班长来找教务老师要,教务老师就会给。因为,你没有班长的身份,而班长却有,因为有身份,所以可以接触到比你更多的function和module(模块)。所以,下面我会有两张表,一张是function表,记录用户可以进行哪些操作(最基本的就是CURD了),还有一张是module表,用来记录这个软件涉及到哪些数据库表,比如会包括user表,score表等等。

跟ER图类似的,有了每个独立的模块后,接下来要做的就是模块间的联系了。这里,我会在user和role中建立一个user_role表,这个就不解释了;然后,我会在role、function和module三张表中,建立一个关系role_foo_module表,用来表示:某一个角色,可以操作哪些表,并且在这些表里可以进行哪些操作。

其实,这里的role_foo_module是一种枚举的方法,类似算法里的打表法:提前把结果枚举出来并记录,以供后面再次的访问。怎么说呢,这个方法我知道不是很好的,因为我才刚刚接触这种问题不久,没有经验。但是,有解决方案总比没有解决方案强。

0 0
原创粉丝点击