1

我有一个位掩码权限+角色集:

{
    EDIT: '1',
    DELETE: '2',
    ADD: '4',
    VIEW: '8',

}

我正在寻找使用按位运算扩展撤销用户权限的最简单方法。

例如,一个用户有7 个设置为允许他的权限EDITDELETE并且ADD

我想添加VIEWand ADDor 12

将712扩展为15的最简单公式是什么,反之亦然?

我如何撤销用户现有的权限12 ( VIEW, ADD) 以撤销 ( DELETE, ADD) - 6使其等于8

4

1 回答 1

1

好的,我已经想出扩展你会使用Bitwise OR (|)像这样的运算符

// Extend Permissions
var userPermissions = 7;
var addPermissions  = 12;
var newPermissions  = userPermissions | addPermissions // 7 | 12 = 15

要撤销,您可以使用Bitwise AND (&)并从用户权限中减去它,例如:

// Revoke Permissions
var userPermissions    = 12;
var revokePermissions  = 6;
var newPermissions     = userPermissions - (userPermissions & revokePermissions) // 12 - (12 & 6) = 8
于 2014-09-05T23:02:26.830 回答