最经典的权限设计同样也是最糟糕的权限设计,权限设计理念最关键第一步之间的PK

前端之家收集整理的这篇文章主要介绍了最经典的权限设计同样也是最糟糕的权限设计,权限设计理念最关键第一步之间的PK前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
大概在接近10年前做VB版本的ERP系统,其中的权限分配也完全是类似下面的设计思路,分若干个模块、有新增、删除、编辑、删除、扩展1、扩展2、扩展3等操作权限定义,当时也很佩服设计类似权限系统的人,感觉设计这个的人真的是很有水平,甚至在后来的N多业务系统里也进行模仿,也做过类似的权限判断优化的存储过程程序等,当年也非常有成就感,呵呵。

当还没深入开发时也感觉不出来其中的奥秘,也体会不出来否好用还是不好用,就感觉看着是很强大,足够强大,还可以无限扩展一样。

随着自己着手开发的信息化业务系统越来越多、经验积累也越来越多、各种体会也越来越深刻,从最近5年左右开始,逐渐发现这个权限设计存在蛮多问题,有很多细节方面无法满足开发要求灵活性,先简单的总结一下其中的不足,虽然对付用用还是没问题:

1:例如有些模块,是没删除功能的也没结束功能的,例如打个比方“成本预算”不是啥模块都清一色“添加删除修改”,权限哪里有那么简单了。

2:无法进行灵活扩展,例如某一个人有人事招聘权限、面试权限、笔试权限、确定岗位权限、确定试用期期限的权限,那怎么扩展了?那不是没完没了了?

3:判断权限的函数相对繁琐,需要判断哪个模块上的什么操作权限?2个参数才可以,相对于只进行有什么操作权限判断还是过于复杂。

4:无法简化、细化操作权限项,例如我想简化为5个权限,不想设置这么多权限时,就会麻烦一些。

由于存在以上几点缺点无法得到比较好的解决,后来权限管理的设计就进行了简化、使得更加灵活了,更加好扩展了。

操作权限的判断函数也变得非常简单,就一行代码就可以了,思路也简化了,灵活性也有了。

// 这些是操作权限,当前用户有什么相应的操作权限?
this.permissionAdd = this.IsAuthorized("RoleAdmin.Add");

一个好的权限管理系统,若刚开始就走错了方向,那接下来越走就越折腾了,很多时候往往是设计思想的一点点变化,可能会导致全局上的天大差别,有的软件越走越臃肿,越累。

其实很多时候,往往是差距那么一点点的小小的设计理念,小小的功能差别,就能绝对胜败。例如海湾战争期间,伊拉克的坦克也是坦克,老美的坦克也是坦克,他们很多功能都有,但是人家老美的坦克就能多打几百米,那就整个战场上可能就由于有几百米的差距,带来惨痛的损失,在软件开发上也是一样的,很多功能上的一些细小的差距很可能导致了,整个软件系统就是没人家的好用。

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。

猜你在找的VB相关文章