这个问题,应该在一个多用户的系统里面,是一个比较常见的问题,也看过很多人有过不少种的解决方法,其中有一种是我认为比较好的解决方法:
每一种权限,相当于一种开关,也就是一个BIT,假如我们将这些权限,每一种权限用一位表示,那么,整个权限体系,不过是个BIT序列而已,也就是说不过是二进制的000000而已,这样一来,就好解决问题了
我们可以用二进制的每一位代表一个权限标志,0没有此权限,反之1则是有权限,如果要扩展,就直接添加高位数的就行了,当然这是把权限存进数据库的做法,而在应用程序中,最好是能够构造一个枚举,用一些单词来表示权限,这样才能使代码更易读懂.
还有一点就是在读取某一权限位时,建议采用"异或"操作会比较方便一点,
每一种权限,相当于一种开关,也就是一个BIT,假如我们将这些权限,每一种权限用一位表示,那么,整个权限体系,不过是个BIT序列而已,也就是说不过是二进制的000000而已,这样一来,就好解决问题了
我们可以用二进制的每一位代表一个权限标志,0没有此权限,反之1则是有权限,如果要扩展,就直接添加高位数的就行了,当然这是把权限存进数据库的做法,而在应用程序中,最好是能够构造一个枚举,用一些单词来表示权限,这样才能使代码更易读懂.
还有一点就是在读取某一权限位时,建议采用"异或"操作会比较方便一点,