随着时间的流逝,CommunityServer已经被我冷落了不少时间了,今天无意中又拿起了这个伟大的工程。可能CS2007的到来还有一段距离,不过也有很多人说那将要花Money去买,不管怎么样他带给了我们不少。今天我看了一下一些论坛的权限设置,所以又想起了这个咚咚;其实我对RBAC也不是非常熟悉,可能我天生对会员权限着一块就有一种恐惧感。闲话就不多说了,切入正题。

首先对RBAC的几个概念要有所了解:RBAC的全名为Role Based Access Control,中文名为角色访问控制。它具有两大显著的特征:1.由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

  粗粒度:表示类别级,即仅考虑对象的类别(the type of object),不考虑对象的某个特定实例。比如,用户管理中,创建、删除,对所有的用户都一视同仁,并不区分操作的具体对象实例。

  细粒度:表示实例级,即需要考虑具体对象的实例(the instance of object),当然,细粒度是在考虑粗粒度的对象类别之后才再考虑特定实例。比如,合同管理中,列表、删除,需要区分该合同实例是否为当前用户所创建。

其他的概念可以去搜一下,网上很多,这里图个方便,写了错事抄了两个。下面我们来看看CS中是怎么来实现的:涉及到权限当然是要有用户的,在CS中用户是User类;而用户又和角色挂钩Role,用户和角色之间的关系就是UsersInRoles来关联;Role相当于Group好像其他地方都把它当成Group,在RBAC中用户是不和权限拴在一起的,每个Role都有各自的Permission;有由于CS是个集成多个ApplicationType的项目,每一个ApplicationType所对应角色的权限有可能不一样。看一下数据库的关系图:

  在cs_ProductPermissions表中存放的是各个ApplicationType所对应的一些Permission,在cs_SectionPermission表中存放的是各个Section(一些从Section继承的类)所对应的Permission。下面我们看一下CS中对Permission的定义:

 1     [Flags()]
 2     public enum Permission : long {
 3         Undefined        = 0,
 4         View            = 0x0000000000000001,
 5         Read            = 0x0000000000000002,
 6         Post            = 0x0000000000000004,
 7         Reply            = 0x0000000000000008,
 8         Edit            = 0x0000000000000010,
 9         Delete            = 0x0000000000000020,
10         LocalAttachment    = 0x0000000000000040,
11         Vote            = 0x0000000000000080,
12         MarkAsAnswer    = 0x0000000000000100,
13         RemoteAttachment= 0x0000000000000200,
14         Video            = 0x0000000000000400,
15         Ink                = 0x0000000000000800,
16         CreatePoll        = 0x0000000100000000,
17         Sticky            = 0x0000000200000000,
18         Announcement    = 0x0000000400000000,
19         EditOthers        = 0x0000000800000000,
20         Moderate        = 0x0000100000000000,
21         Administer        = 0x0100000000000000,
22         SystemAdmin        = 0x4000000000000000,
23     }
24 
25     public enum AccessControlEntry {
26         NotSet  = 0x00,
27         Allow   = 0x01,
28         Deny    = 0x02
29     }

上面的两个枚举就是所涉及到的权限,Permissions是固定的,一个项目所涉及到的所有控制权限都应该枚举于此;AccessControlEnty枚举说明了允许和禁止的两个所对应的Permission。在这里还有一个必须要提起的一个类,那就是PermissionBase类,在各个的ApplicationType模块程序的Permission都必须继承与此类;同时在这个文件中我们还可以看到两个代理方法用于判断是否有权限。

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/02/02/communityserver_userrolepermission_rbac.html,如需转载请自行联系原作者

[CommunityServer]看RBAC的一方景象相关推荐

  1. 转: 大年三十整理的asp.net资料!(经典)

    使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 ...

  2. (轉貼) 大年三十整理的asp.net资料! (.NET) (ASP.NET)

     大年三十整理的asp.net资料! 使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.N ...

  3. ASP.NET 实用资料[转]

    使用SqlBulkCopy类加载其他源数据到SQL表  在数据回发时,维护ASP.NET Tree控件的位置  vagerent的vs2005网站开发技巧  ASP.NET2.0小技巧--内部控件权限 ...

  4. 什么叫水平,不是看懂了叫水平,也不是会用了就叫水平,更不是懂得更多才叫有水平,而是知道如何做才能做得更好才叫真正有水平?...

    其实有很多同事.朋友.同行,水平个个都很强的,写程序也很快,但是他们有一个共同的缺点,就是懂得太多.想法太多.想做得太多但是仔细认真做得太少.做得精的太少.经得起考验的更少.真正可以实际应用可以广泛推 ...

  5. 电商平台-RBAC系统权限的设计与架构

    说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想 ...

  6. 怎么看k线图_详解下降三角形

    在黄金白银的价格走势K线图中,下降三角形并不罕见,不过大家是否了解它的技术要点和市场含义呢? 下降三角形的形状的上升三角形恰好相反.贵金属价格在某一水平价位处出获得了一定的买盘支持,因此每回落到该水平 ...

  7. 阿里王坚:机器比人做得好的事,那这件事就不该由人来做

    去年云栖大会上,杭州市政府联合阿里云在内的13家企业提出建设"城市大脑"项目. 雷锋网了解到,"城市大脑"可以理解为一座城市的人工智能中枢.其内核采用阿里云ET ...

  8. 完全相同的4个小矩形如图所示放置_短线投资,遇到“矩形突破”,斩钉截铁满仓干!...

    所谓矩形形态,就是平常所说的箱体震荡,而上升矩形形态就是指股价在上下两条水平的界线之间波动,而后选择向上突破所形成的K线形态图.如图所示. 矩形形态折射出了实力相当的多空双方的博弈,当这一形态出现时, ...

  9. Hibernate的搭建

    1.创建普通的java项目 hibernate是一个轻量级框架,只需要jdk的支持 2.引入jar包 下载好hibernate的jar包并导入 3.进行Hibernate配置 在Hibernate.c ...

最新文章

  1. 如果去掉数学前后的空格_理综+数学+地理+英语完型的方法和技巧
  2. Spring中将header头转换为参数
  3. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
  4. 使用Julia进行图像处理--图像表示与匹配算法
  5. QQ2011的DD包密码验证报文解密密钥计算困惑之二
  6. keras分类器模型
  7. 小设备 大智慧——天霆交互技术让终端变得更智能
  8. java求两个非零正整数的最大公约数和最小公倍数
  9. android 首字母 验证码,Android 验证码功能实现代码
  10. ESP32 下载与烧录最新固件
  11. 目前流行的计算机配置有哪些,2019最流行电脑配置
  12. CSS设置 background-image透明度小技巧
  13. hdlc协议解码的四种方法
  14. echarts改变字体颜色
  15. FPGA控制W5500完成UDP环回测试
  16. NFT元宇宙游戏开发铸造源代码怎么写案例分享
  17. [1-6] 把时间当做朋友(李笑来)Chapter 6 【更多思考】 摘录
  18. 基于Unity3D的自动寻路车辆模拟
  19. 无人驾驶仿真软件合集
  20. 你发现没?www和https://又被Chrome地址栏隐藏了

热门文章

  1. c语言初学者百题大战答案七,C语言百题大战2405how many minutes
  2. linux中setfacl命令,setfacl命令
  3. h5 video 手机 显示第一帧_解决h5嵌入app后video标签poster不能显示视频第一帧(表现为空白)...
  4. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法
  5. python getattr_Python中的getattr()函数详解
  6. python:文件读写操作
  7. tensorflow学习(3.tensorboard的使用)
  8. 全球及中国壁纸市场盈利预测与投资风险分析报告2022-2027年
  9. 2022年全球及中国集电环行业发展格局与十四五供需现状分析报告
  10. 源代码文档生成 Doxygen介绍(转载)