首页 > 其他 > 详细

node的二进制权限比对设计

时间:2021-08-10 12:22:25      阅读:19      评论:0      收藏:0      [点我收藏+]

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

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))

node的二进制权限比对设计

原文:https://www.cnblogs.com/JohannaFeng/p/15122794.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!