node的二进制权限比对设计

简单的设计一个权限比对方式:

1、假设有以下权限数字

const a = 1
const b = 2
const c = 4
const d = 8
const e = 16

转换成二进制为

console.log('a:', parseInt(a).toString(2))
console.log('b:', parseInt(b).toString(2))
console.log('c:', parseInt(c).toString(2))
console.log('d:', parseInt(d).toString(2))
console.log('e:', parseInt(e).toString(2))
---
输出:
a: 1
b: 10
c: 100
d: 1000
e: 10000

2、某人有管理权限b,c,d,e

b+c+d+e=2+4+8+16=30

检测权限位为:

console.log('a:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(a).toString(2), 2)))
console.log('b:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(b).toString(2), 2)))
console.log('c:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(c).toString(2), 2)))
console.log('d:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(d).toString(2), 2)))
console.log('e:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(e).toString(2), 2)))
------
输出:
a: false // a权限为false
b: true
c: true
d: true
e: true

重点:

// 权限检测
!!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(a).toString(2), 2))
posted @ 2021-08-10 11:13  fengyujia  阅读(74)  评论(0编辑  收藏  举报