最近写个自己的网站玩可能会用到权限验证,先在网上找点方法。

前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、方法一

用二进制验证

可以推荐你使用 按位与 一般符号是 & 来进行操作。
具体举例:操作1=1,操作2=2,操作3=4,操作4=8,操作5=16
为什么要使用这样的数字呢?
因为它们都是2的倍数,这样就可以保证它们转化为的二进制只占其中的一位。
具体的:1=00000001,2=00000010,4=00000100,8=00001000,16=00010000
你可以看到 每个权限其实只占了一个8位的其中的一位。
假设A具有操作1,操作3,操作4的权限,那么A的权限值为:1+4+8=13 它的二进制为00001101
现在你要判断A是否具有操作3的权限,只需要判断 13&4 是否等于 4就可以。
具体的:
00001101& 00000100


00000100

可以看到如果你有此权限的话,该值是等于操作的权限值的。
我们再来验证A是否具有操作2的权限:
00001101& 00000010


00000000
看到了吧,值等于0,表示A没有操作2的权限。
你只要再此基础上封装一下这个操作,就可以实现全线的验证了!
比如:

1
2
3
4
5
6
7
public string validate(int powers,int power){
//powers用户具有的权限,power具体的一个权限
if(powers&power!=power)
return "你没有该操作权限!";
else
return "你具有该操作权限!";
}

ok 大功告成!