1、数据库中表的设计

  首先,在数据库中设计功能模块表、功能表和角色表等三个表。

  (1) 功能模块表

  为了管理好用户的权限,首先要组织好系统的模块,为此设计了一个功能模块表。见表1。

  (2) 功能表

  每个功能模块所具有的子功能称为功能,如商品管理模块goods(属于功能模块的范畴)包含商品信息查询、商品信息更新、商品信息删除、商品定价信息查询以及商品定价信息更新五种功能,功能表的设计见表2。

  上面提到的例子可以作为这样几条记录分别插入功能模块表和功能表。


(3) 角色表

   角色表的设计关键在于角色值的定义,它是一个由0和1组成的类似二进制数的字符串。而功能表中的funcNo (功能编号)字段表示该功能在角色表的roleValue (角色值)字段中的位置,如果该位置对应的数值是0,表示该角色无此权限,如果值为1,则表示该角色拥有此权限。如角色普通会员的角色值为100100… 00(共100位),如上所示,商品信息查询的功能编号为0,角色值100100…00的第0位为1,所以该普通会员角色拥有商品信息查询的功能;相反, 该角色值的第1位为0,而功能编号为1 的功能为商品信息更新,所以该普通会员角色没有商品信息更新的权限。它们的关系可由图2来表示。

  2、角色的添加

  有了上面几个表,角色页面的功能模块以及其对应的功能都可以从功能模块表和功能表中读出,如图3所示。

  在将新角色普通会员插入数据库时,先将角色值的所有位都置为0,然后利用.NET Framework 类库中的Replace函数将角色值中的打上勾的功能相应的功能编号位的值改为1。

  例如,新添加一个角色名为普通会员的角色,它拥有的功能为商品信息查询(功能编号0)和商品定价信息查询(功能编号3)两项,则角色值应为1001000……00(100位),即角色值中第0位和第3位的值为1,其余为0。

3、利用用户控件实现访问权限

  在定义好用户控件.ascx文件(head.ascx)及.ascx.cs(head.ascx,cs)文件时,接下去只要在.aspx文件中注册和声明它就可以了。

  (1) 注册

  <%@ Register TagPrefix="Acme" TagName="Head" Src="../UserControl/headinner.ascx" %>

  (2) 声明

  经过实践,在.aspx文件中声明.ascx文件可分为几种情况:

  第一种情况:<Acme:Head runat="server" />

  第二种情况:<Acme:Head runat="server" flag=0 funcname1=selectgoods funcname2=updategoods />

  第三种情况:<Acme: Head runat="server" flag=1 funcname1= selectgoods funcname2=updategoods />

   字段flag是用来控制怎样进行权限检查的标志,funcname指功能表中的功能英文名。如果flag为空,则不执行权限检查(第一种情况);否则如 果flag=="0",则表示同时具有selectgoods(商品信息查询)和 updategoods(商品信息更新)这两种权限的角色所对应的用户才有权利查看该页(第二种情况);否则,如果flag=="1",则认为,具有 selectgoods(商品信息查询)或 updategoods(商品信息更新)这两种权限中任意一种权限的用户就有权利查看该页(第三种情况)。

   上面进行权限检查的过程全部由用户控件来实现,其全部方法都封装在.ascx.cs文件中,其中最主要的一个方法是检查某一角色是否拥有某一确定权限的 checkAuth(string roleId,string funcEName)方法。这个方法的思想如图4所示。

   图4中roleValue(角色值)的第0位(selectgoods的功能编号)值为1,表示该角色拥有selectgoods(商品信息查询)的权 限。这样,我们把对权限检查的所有逻辑都封装在了用户控件中,因此,对WEB窗体页.aspx文件而言,只需在导入.ascx文件时确定用户在访问该页面 时所应拥有的权限,而不需对aspx.cs进行任何改动。

  由上所述,可以很清楚地看出,只要在用户控件中对用户权限进行控制,再把它包括在.aspx文件中(这件事作者本来就是要做的),那么在编程的时候就不必考虑复杂的权限问题了。

转载于:https://www.cnblogs.com/jerryhong/archive/2008/04/30/1177693.html

转载:ACL权限控制相关推荐

  1. Ⅳ:zookeeper的acl权限控制

    2021最新zookeeper系列 ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤ ...

  2. Linux之ACL权限控制

    ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定的权限 设置ACL权限:setfacl ...

  3. Kafka集群搭建及SASL/SCRAM,ACL权限控制

    Kafka集群搭建及SASL/SCRAM,ACL权限控制 环境 部署zookeeper集群及安全认证 部署kafka集群及安全认证 环境 系统版本:Centos7.4 kafka版本:kafka_2. ...

  4. kafak集群部署配置,开启SASL_PLAINTEXT认证以及acl权限控制

    SASL_PLAINTEXT认证 本人认为就是consumer连接broker开启了用户名,密码认证 acl权限控制 就是指针对用户 配置拥有哪些操作权限,如 topic的读,写,group的读,to ...

  5. ZooKeeper ACL权限控制

    1.1.ACL权限控制: 使用scheme.id.permission 来标识,主要涵盖 3 个方面: 权限模式(scheme):授权的策略 授权对象(id):授权的对象 权限(permission) ...

  6. Linux下ACL权限控制以及用sudo设置用户对命令的执行权限

    ACL权限分配 1.setfacl命令设置文件权限 setfacl -m u:user1:rw root.txt setfacl -m u:user2:rwx root.txt 2.getfacl命令 ...

  7. Apache ZooKeeper - ZK的ACL权限控制( Access Control List )

    文章目录 概述 权限模式(Scheme) 口令验证 范围验证 Super权限模式 授权对象(ID) 权限信息(Permission) ACL相关命令 跳过ACL检测 实操ACL 生成授权ID 方式一 ...

  8. zookeeper的acl权限控制_zookeeper权限acl与四字命令

    权限acl介绍,acl的构成与id acl是Access control lists 的缩写,也就是权限控制列表: 针对节点可以设置相关读写等权限,目的是为了保障数据安全性 权限permissions ...

  9. linux设置用户的执行权限,Linux下ACL权限控制以及用sudo设置用户对命令的执行权限...

    ACL权限分配 1.setfacl命令设置文件权限 setfacl -m u:user1:rw root.txt setfacl -m u:user2:rwx root.txt 2.getfacl命令 ...

  10. Zookeeper后端开发工具Curator的使用 | Curator对节点的增删改查 | ACL权限控制 | 分布式锁 | 分布式计数器 | 附带最新版本下载

    前言 Curator是Apache开源的一个Java工具类,通过它操作Zookeeper会变得极度舒适! 前置条件:已掌握的基本操作,比如在后台可以增减节点.ACL权限设置等. 1.Zookeeper ...

最新文章

  1. 延展信息按单制造ERP荣获2012中国软件优秀解决方案奖
  2. mysql varchar(max)_等价于MySQL中的varchar(max)?
  3. 关于自定义可以点击的的布局
  4. C# 操作FireBird 附源码
  5. 74款app源码,值得你拥有的干货
  6. jvm(2)-OutOfMemoryError 异常(内存溢出异常)
  7. 异步服务_微服务全链路异步化实践
  8. 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream
  9. 规范白盒生态 S³IP助力未来可预期服务网络
  10. 语言认知偏差_认知语言学可以教给开发人员什么
  11. android 继承现有控件,Android继承现有控件拓展实现自定义控件textView
  12. 95-33-020-ChannelHandler-ChannelHandler简介
  13. java中html5表格_java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)...
  14. 机器学习-吴恩达-正规方程多变量回归公式
  15. jquery 1~6
  16. 跨域请求的两种实现方式
  17. 计算机专用英语词汇1695个词汇表
  18. UE4开发五:人物模型和摄像机
  19. cgb2107-day07
  20. 分布式三大利器之《消息队列》

热门文章

  1. Java程序员涨薪必备技能
  2. hashmap的C++实现
  3. 算法-数组中重复的数字
  4. 逐行分析Hadoop的HelloWorld
  5. ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦弹出窗口,并可以播放音频文件...
  6. 在leangoo里怎么复制删除列表?
  7. how to check unsolved conflicts file list in git merge?
  8. 【转载】Oracle10g数据类型总结
  9. Conficker-AE的处理方法
  10. 皮尔逊相关系数的计算(python代码版)