一时失误的权限设计

    最近接到一个需求需要增加一个功能的权限控制点。以前由于设计时没有考虑权限这块,这是允许管理员进行
操作,但是随着业务的发展和实际需要,使用管理员账号来做相当的不便。所以决定加上这个权限控制点。
具体来说说我们这个需求吧,其实也不难。就是要给客户批量导入,客户批量修改,客户批量更新增加一个新增
和修改的权限。刚开始我也认为很简单,接到需求后,我了解清楚,并和BA确认完毕后,就将任务交代给另外一个
同事进行开发。自然这个任务也没有想象的那么难,很快就完成了开发和单元测试。但是经过测试人员的测试发现
了一个诡异的Bug,就是批量新增和批量修改的权限同时选择时,会相互覆盖,也就是说,你如果同时选择新增和
修改权限,那么不好意思,只能保存一个到数据库中。
于是我觉得很奇怪就跟踪了下,并查看了数据库中的权限设置,问题出现了,原来批量导入和批量修改是共用的
一个画面,不仅画面是一个,当初设计权限点时也是合并在一起的,只有一个ID来记录这2个画面的功能点。
所以如果在选择了批量导入中的查看和新增功能,并且同时选择了批量修改的查看和修改功能,那么数据库保存
时将用后者覆盖前者。当然这个问题不是无法解决的,只需要将这2个的功能权限点分开成2条记录存储即可,不要
合在一起,当然也可以使用特殊方法处理这2个的权限,但是无疑这都不是最好的方法来处理。
最好的是在设计权限之初就将这2者彻底分离,以免后期维护和升级及业务变更时,更改的代价太大。权限的控制
最好细到一个画面,一条记录的控制,不要想着省事,合并一起用。今天算是体会到了这样合并的代价。
原文地址:https://www.cnblogs.com/kevinGao/p/3589975.html