zoukankan      html  css  js  c++  java
  • MIS系统权限控制的一个简便方法

    MIS系统权限控制的一个简便方法

    MIS系统权限控制的一个简便方法收藏 新一篇: 创MIS系统的权限又多又复杂,很多人是在用户数据表中设置多个字段,每个字段代表一个权限,或者设置一个字符串,不同的字符组合表示用户的不同权限。简单一点的,可以预先设置几个角色,根据角色来行使预设权限,但又不够灵活。现介绍一个简单灵活的权限分配控制的方法,并无高深见解,只是很多人忽略了它。如果您正在设计权限控制模式,不妨接着往下看。

    此方法非常简洁,扩充性很好。

    仅用一个 integer 字段即可保存全部权限组合。

    另外每个权限用一个整型表示
    如:商品查看权限用 1 ;
    商品更改权限用 2 ;
    商品完全浏览权限用 4 ;
    订单查看权限用 8 ;
    订单更改权限用 16 ;更多权限…… 32,64,128 ……

    给用户分配权限时,只需把用户获得的权限值累加就可以了。
    应用时使用“与”操作来识别哪个用户是否拥有相应的权限。


    例子
    if 用户的权限总值 and 当前操作所需的权限 = 当前操作所需的权限 then
    showmessage('有权限')
    else
       showmessage('无权限');

    运用此法,可简单的设计出复杂的权限系统。

    这篇文章实为一抛砖引玉之作,如您有更好的权限控制系统设计思路,欢迎来信讨论: ufo2003@126.com

    #aedvoan 发表于2005-11-13 15:24:00   IP: 220.191.126.*
    能稍稍解释下这是为什么吗?
    #小网虫 发表于2005-11-18 18:13:00   IP: 218.72.153.*
    道理很简单啊,and 是以二进制按位“与”操作的。其真值表是:
    1 and 1 = 1
    1 and 0 = 0
    0 and 1 = 0
    0 and 0 = 0
    比如十进位值 9的二进制是:01001
    8的二进制是:01000
    9 and 8的二进制结果是 01000= 8
    9 and 4的结果是 00000= 0
    所以,就表示8包含在9的组合方式内(8+1=9),而4不包含在内。
    #dbj 发表于2006-05-27 13:40:00   IP: 221.221.218.*
    高明
    #touchboy 发表于2006-11-07 12:25:00   IP: 124.29.31.*
    我也是从速达那学到这一招,已经在很多项目中运用  

  • 相关阅读:
    DO语句与SELECT语句,HANDLER语句
    Mysql 删除语句
    Mysql 调用存储过程的两种方式
    Mysql tablespace
    忘记Mysql登录密码
    Mysql 全文索引
    Mysql手册—SQLStatementSyntax
    Mysql手册—基本规范与数据类型
    Mysql常用函数列举
    真三 典伟的帅气
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940767.html
Copyright © 2011-2022 走看看