权限控制之巧用位开关

假设页面上有个列表,列表中三种操作权限(增加、修改、删除),根据当前登录角色不同而不同。一般如下实现。

1
2
3
4
5
6
7
8
var lockFlag = 0; // 当前用户权限,0:新增,删除,修改;1:不能新增,不能删除,不能修改;2:不能新增、删除、修改
if (0 === lockFlag) {
// 启用所有操作按钮
} else if (1 === lockFlag) {
// 禁用新增、删除、修改按钮
} else if (2 === lockFlag) {
// 禁用新增,启用删除和修改按钮
}

如果要增加一种权限组合(如:不能新增、不能删除、修改)怎么办,再加一个else if,可以试试另一种方式引入位开关

1
2
3
4
5
6
7
8
9
10
11
12
13
// 权限定义如下:
1:新增;2:修改;4:删除
// 若当前支持新增和删除
var lockFlag = 5;
if ((1 & lockFlag) === 0) {
// 禁用新增按钮
}
if ((2 & lockFlag) === 0) {
// 禁用修改按钮
}
if ((4 & lockFlag) === 0) {
// 禁用删除按钮
}