zoukankan      html  css  js  c++  java
  • 权限设计

    每一种权限,相当于一种开关,也就是一个BIT,假如我们将这些权限,每一种权限用一位表示,那么,整个权限体系,不过是个BIT序列而已,也就是

    说不过是二进制的011010而已,这样一来,就好解决问题了
    同样的问题,我们这样假设:

    第一位 表示 读取
    第二位 表示 运行
    第三位 表示 修改
    第四位 表示 删除
    ......
    以此类推,假如,我们想给一个用户分配运行和修改权限,其他权限都不给予,于是,他的权限字符串可以表示为:0110,这样,用若干个位的组合,我

    们就解决了权限的灵活组合问题(位组合这种解决方案,真是比比皆是,其实,他就是一种数据结构而已,我们叫他UNION?)
    另外一方面呢?如何扩展?扩展就更容易了,当添加新的权限时,可以直接在高位加上一位即可
    如何判断有无某权限呢?我们可以直接取某位的值,根据其0,一来判断即可
    最后,实际上,C/C++/C#中,你可以做得更棒,那就是定义一个枚举类型,例如:
    enum rights
    {
    read,
    list,
    exec,
    write,
    delete
    }

    这样的好处是用名字来引用权限,就更好了
    判断权限时,可以使用按位与,例如,用户权限为100001
    而运行需要的权限是1000
    两者按位与的结果是00000000,显然无此权限,用公式表示就是
    RN & R=RN,则代表用户有此权限,我的意思是
    所需权限&用户权限=所需权限  符合此条件,即表明有权限
    写的比较抽象,但是,相信有权限设计经验的朋友一看就明白了

  • 相关阅读:
    团队贡献分
    《一个程序猿的生命周期》读后感
    阅读课本13-17章
    第三阶段冲刺(进度反应)
    阅读<构建之法>10、11、12章
    典型用户与场景描述
    第一阶段小组互评及反馈
    第一阶段总结及第二阶段开始会议
    spring冲刺阶段之团队工作总结
    alpha阶段总结 (第一阶段冲刺成果)
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/1332934.html
Copyright © 2011-2022 走看看