比如这个权限付值:
perm |=(1l<<k);
perm已经是long,1也是long型,K如果大于60多,1l<<k 就会溢出,,,变成负的。
也就是说用位连计算权限,只能有60多个权限,
我的系统已经有40多个了,距60也不用了,不知到家是怎么处理的???
perm |=(1l<<k);
perm已经是long,1也是long型,K如果大于60多,1l<<k 就会溢出,,,变成负的。
也就是说用位连计算权限,只能有60多个权限,
我的系统已经有40多个了,距60也不用了,不知到家是怎么处理的???
如果perm 和1 都是int的话,系统可以有31个权限,
如果权限个数大于62呢?该怎么做?
如果用位来限制权限,超过long型的,可以试试用多个long组合,自己控制位数,对多个long进行权限判断
if (k>63) {
perm1 |= (1l<<(k-63));
perm2 |= (1l<<63);
} else {
perm1 = 0;
perm2 |= (1l<<k);
}
角色表
用户表
角色权限表
用户角色表更精细地还可以有用户权限表。若一定要用位域的话,可以看看 java.util.BitSet 这个类。
可以改为字符串,存时String s = String.format("%016X", perm1) + String.format("%016X", perm2);
取时再把字符串按16位拆分为多个long型的16进制字符串,然后转为相应的long