【问题标题】:Bitmask Permissions - Extending/Revoking permissions位掩码权限 - 扩展/撤销权限
【发布时间】:2014-09-05 21:42:02
【问题描述】:

我设置了位掩码权限+角色:

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

}

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

例如,用户将 7 设置为允许他EDITDELETEADD 的权限

我想添加VIEWADD12

127 扩展为 15 并反之亦然的最简单公式是什么?

我怎样才能撤销用户现有的权限 12 (VIEW, ADD) 撤销 (DELETE, ADD) - 6 这样它会等于 8?

【问题讨论】:

  • 扩展:7 按位或 12 = 15;撤销:12 按位和按位非(6)= 9

标签: permissions bit-manipulation bitmask bit-masks


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2016-06-05
    • 2016-02-02
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多