权限模块的设计
最近单位要做一个新项目,我是做权限模块的设计的,因此网上查阅了很多文章,想寻求一下设计的灵感。终于发现了一篇文章,是说权限管理模块的设计的,觉得作者讲得挺有道理的。
一般情况下,我们要求可以使用某个菜单项或者可以使用某个模块的所有功能,这种是简单的权限控制。但是在实际项目中,尤其是一些大型的ERP等系统中,会有更细致的权限控制,比如,需要某类用户能看到某个按钮enable、某类用户看不到某些按钮等等。这种情况下,权限的控制需要细到控件的粒度。
如何设计这样的权限模块,作者做了比较深入和全面的讨论,以我的理解概括如下:
首先,前面一开始所说的粗粒度的权限控制,是基本上多数系统都拥有的逻辑,因此,可以考虑做成一个“通用”的权限模块。其次,由于细到控件粒度的权限控制已经属于“程序定制”一类,算是某个程序独有的特点,因此,想把它做成一个通用的模块,可以让N个程序用,已经失去了意义,也不可能实现。我们抽象成一个公共模块的意义就在于“通用性”,而这种细粒度的权限控制已经没法“通用”了,因此,建议的做法就是把细粒度的权限控制,放到业务逻辑中,作为业务逻辑的一部分来处理即可。
我觉得这样的做法非常有道理,按照这样的思路去编码,程序也不会乱,单位的这个项目就采用这种做法了!欢迎大家来拍砖讨论!