无论是在网站架构上,还是在游戏里,还是软件架构里。不同的级别的用户对应于不同的操作权限。前段时间接触了有关权限设置和验证的算法,感觉写的挺好,学习一下。同时分享一下。
计算机底层是通过对0和1的不同组合然后通过不同的门的不同逻辑运算得出0或者1。我们在权限设置里也可以采用这种方法。比如有个不同的权限限定系统。我就不画图了(本人很懒的)。在这里大概介绍一下怎么分级,如何初始化,如何验证。呵呵,里面你可以感觉出与和或操作的神奇搭配组合。
enum{
司令 = 0,
军长,
师长,
旅长,
团长,
营长,
连长
};
enum{
可以抽烟 = ox1, // 0000001
可以喝酒 = ox2, // 0000010
可以娶媳妇 = ox4, // 0000100
可以生两个孩子 = ox8, // 0001000
可以升值 = ox10, // 0010000
可以打人 = ox20, // 0100000
可以带兵 = ox40 // 1000000
};
好的,聪明的孩子已经知道什么意思了吧,对于不同的权限对应上不同的数字1就可以了。当然了要给一个人分配权限我们只需做“|”操作。
现在举个例子:
司令权限 = oxffffff;
连长权限 = 可以抽烟 | 可以喝酒;
这个初始化每个级别的权限,然后就是判定了,比如说连长要生两个孩子。就用连长的权限去和生两个孩子做“&”运算。举个列子:
连长权限&可以生两个孩子 = ox0;
很明显了,是不能生两个孩子。没有这个权限。
好了基本上说完了,当然了在实际操作中要有一个明确的思路,
1、初始化不同等级
2、初始化不同权限
3、初始化不同等级对应不同权限的地图
4、写验证函数
这是验证的基本思路,其它的验证这个人是否属于这个用户组,这个人是不是定义的级别里面。等等,实际操作中自己要把握好自己的脉象。
先写到这里,有点简单了。但我认为主要是思路,编码不难谁都会,但是思路不一定有。