zoukankan      html  css  js  c++  java
  • 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))
    
  • 相关阅读:
    [CF1336C] Kaavi and Magic Spell
    [CF1338C] Perfect Triples
    [CF1353F] Decreasing Heights
    [CF1442B] Identify the Operations
    [CF1354E] Graph Coloring
    [CF1364D] Ehab's Last Corollary
    php-fpm和fastcgi的区别
    phpredis实现互斥锁
    关于lnmp情况下PHP单线程的理解
    客户端断开链接以后 PHP执行过程实测
  • 原文地址:https://www.cnblogs.com/JohannaFeng/p/15122794.html
Copyright © 2011-2022 走看看