通过与或等逻辑运算进行权限验证功能
Last Updated:2022-08-12
默认javascript语言
逻辑运算
1. & 按位与
2. | 按位或
3. ^ 按位异或
4. ~ 按位非
5. <<左移
6. >>有符号右移
7. >>>无符号右移
异或
具体实现(javascript版)
class Permission {
// 是否允许查询,二进制第1位,0表示否,1表示是
static SELECT = 1 << 0; // 0001
// 是否允许新增,二进制第2位,0表示否,1表示是
static INSERT = 1 << 1; // 0010
// 是否允许修改,二进制第3位,0表示否,1表示是
static UPDATE = 1 << 2; // 0100
// 是否允许删除,二进制第4位,0表示否,1表示是
static REMOVE = 1 << 3; // 1000
// 存储目前的权限状态
static TEST = 1 << 4;
constructor() {
this.flag = 0;
}
/**
* 重新设置权限
*/
setPermission(permission) {
this.flag = permission;
}
/**
* 添加一项或多项权限
*/
enable(permission) {
this.flag |= permission;
}
/**
* 删除一项或多项权限
*/
disable(permission) {
this.flag &= ~permission;
}
/**
* 是否拥某些权限
*/
isAllow(permission) {
console.log(this.flag);
console.log(permission);
return (this.flag & permission) == permission;
}
/**
* 是否禁用了某些权限
*/
isNotAllow(permission) {
return (this.flag & permission) == 0;
}
/**
* 是否仅仅拥有某些权限
*/
isOnlyAllow(permission) {
console.log(permission, this.flag);
return this.flag == permission;
}
}