`

尚学堂OA系统中ACL的CRUD解释

阅读更多
oa权限管理分为:
人员管理
角色管理
模块管理
其实有这样一些概念:
主体:用户和角色可以称为主体。
资源:就是可以进行crud的对象。
权限:就是对资源的crud操作。
授权:就是对这种权限的分配。
认证:就是查询用户是否有权限。

用户和角色的关系是多对多,这共同组成了主体。
模块是资源。

主体和资源的纽带是ACL(访问控制列表),主体和ACL之间是多对多关系,资源和ACL之间也是多对多关系。ACL里面就记录了用户的权限。
在数据库上它就是一个中间表的作用。

授权是这样的:
    授权分为两种:
    角色授权
        对角色统一授权,继承这种角色的用户就自动拥有该角色所拥有的权限,并且权限分有优先级,这样两种权限如果之间发生冲突则取高优级。
    用户授权
        对用户进行单独授权,这种情况必须在不继承角色的情况下才能生效,并且此时只使用单独授权的权限。
每一次授权都是针对特定模块,而不是所有。
搜索用户所有授权过程是这样的:
1、查询用户所有角色的权限,按优先给从低到高,有重复的可以以高优先级覆盖。(存入Map中,key是资源标识)
2、查询用户直接授予的权限。查询不继承的权限。
3、合并权限。
4、再从中选择具体的权限(crud)。
认证过程是这样的:
    根据用户标识和资源标识查找ACL实例
    有实例:
        查看是否有确定授权
            确定:返回授权
            不确定(继承):查询用户拥有角色列表,根据角色标识和资源标识查找ACL实例(循环)
    没有实例:
        查询用户拥有角色列表,根据角色标识和资源标识查找ACL实例(循环)
(1)CRUD授权说明:
     尚学堂OA系统中ACL 中用 int 表示权限是什么意思
一个 int 有32 位,用后4位表示CRUD 操作,位的取值1或0表示授权或不授权
/**
  * acl实例跟主体和资源关联
  * 针对此实例进行授权:某种操作是否允许
  * @param permission 只可以取值0,1,2,3
  * @param yes true表示允许,false表示不允许
  */
 public void setPermission(int permission,boolean yes){
  int tmp = 1;
  //tmp的二进制形式向左移动permission个单位
  //这样经过移动的结果会有四种情况: C:0001 R:0010 U:0100 D:1000
  tmp = tmp << permission;
  if(yes){
   //如果是授权,则把原有的权限与当前的权限相加,二进制用"|"
   aclState |= tmp;
  }else{
   //如果是减去授权,则当前传进来的权限取反,再与原有的权限"&"
   aclState &= ~tmp;
  }
 }
 
 /**
  * 获得ACL授权(获得C/R/U/D的权限是否允许或是否确定)
  * @param permission C/R/U/D权限
  * @return 授权标识:允许/不允许/不确定
  */
 public int getPermission(int permission){
  
  //如果继承,则返回未定的授权信息
  if(aclTriState == 0xFFFFFFFF){
   return ACL_NEUTRAL;
  }
  
  int tmp = 1;
  
  tmp = tmp << permission;
  //只要C/R/U/D中不全部为没有权限(0000),那么与刚刚传入的权限相"&"是不会出现等于0的.
  tmp &= aclState;
  
  if(tmp != 0){
   return ACL_YES;
  }
  
  return ACL_NO;
 }
 


从你上面的意思看
0001为十进制的1:拥有C权限;
0010为十进制的2:拥有R权限;
0100为十进制的4:拥有U权限;
1000为十进制的8:拥有D权限;
也就是用最后四位来表示CRUD的权限,1表示允许,0表示不允许。
那么,
CRUD的权限就是1111,也就是十进制的15;
减少一个D操作也就是减少8,为7
如果再加上一个D操作,那么就加上8,又为15了.
分享到:
评论
1 楼 lys221221 2011-11-03  
你好 在尚老师oa权限管理里面怎么 添加一个审核的权限操作啊  那该怎么添加那?谢谢QQ497234690

相关推荐

    尚学堂OA项目源码

    系统功能包括: 个人办公:1.我的办公桌,2.我的便签,3.我的任务,4.通信录, 公文管理:1.公文维护,2.归档处理, 公共信息:1.信息管理, 行政办公:1.会议管理,2.资产管理,3.用品管理,4.车辆管理,5.图书管理...

    OA项目源码S2SH源码

    尚学堂是一家知名的IT教育机构,他们提供的这个OA(Office Automation)项目源码,为学习者提供了深入理解企业级应用开发的实践平台。 1. **Spring框架**:Spring是Java领域的一个全功能容器,它负责管理应用对象的...

    OA系统PPT知识点及系统需求分析等等

    本压缩包包含的“尚学堂OA系统PPT知识点及系统需求分析等等”资料,是针对OA系统的学习资源,涵盖了从基本概念到实践应用的多个方面。 首先,OA系统的基础知识包括了它的核心功能模块,如公文管理、审批流程、资产...

    s2sh整合实现的oa源码

    【描述】"这是浪曦会员做的,将尚学堂的oa改成了用Struts2来实现"表明这个项目源于浪曦社区的某个成员,他将原有的OA系统进行了重构,采用Struts2作为前端控制器,以替代原有的架构或技术。尚学堂可能是一个教育机构...

    精品OA(包括完整的源程序、文档及数据库)

    在精品OA中,C#被用来构建整个系统的后端逻辑,包括但不限于用户界面、业务逻辑处理、数据访问层等。C#的特性如强类型、垃圾回收、异常处理和丰富的类库,使得开发过程更为高效且稳定。 【源程序】是软件开发的核心...

    ssh2的OA管理项目完全代码,仿尚学堂的ssh,采用新技术

    在这个OA(办公自动化)管理项目中,开发者借鉴了尚学堂的SSH项目,结合最新的技术和最佳实践,提供了全面的源码实现。下面我们将深入探讨SSH2框架及其在OA项目中的应用。 **Struts2** 是一个MVC(模型-视图-控制器...

    OA项目说明文档等,包括说明文档

    2. **页面模板**:在OA系统中,页面模板是预先设计好的界面布局,可以快速生成统一风格的页面,提升用户体验。例如,可以设计审批流程、信息查询、报告生成等不同功能的模板。 3. **日志记录**:日志记录是OA系统的...

    Web-OA系统需求说明书(doc-33页).docx

    - **软件标识**:明确了工程名称(尚学堂Web OA管理系统)、工程编号以及产品范围,强调需遵循招标书中的规定。 - **软件描述**:Web OA系统是信息系统的一部分,设计上需要与其他系统保持一致。文档阐述了开发...

    drp尚学堂培训日志

    【DRP尚学堂培训日志】是一份详细记录DRP(分销资源计划)系统开发过程的日志,旨在分享每日的学习和工作内容。日志中涵盖了从项目开发流程、技术选型到具体业务流程的多个方面。 首先,Web项目开发的一般流程包括...

    Web OA系统需求说明书(doc 33页).docx

    - **项目名称**:尚学堂WebOA管理系统 - **项目编号**:SXT-WEBOA-0101 - **产品范围**:遵循《招标书》中5.2条款规定的内容。 - **产品标识** - **产品名称**:未明确指定 - **产品简称**:未明确指定 - **...

    Web OA系统需求说明书.docx

    此类企业通常无法承担大型软件公司的高额定制费用,因此,开发适合中小企业的高性价比OA系统具有广阔市场前景。 #### 五、系统目标 - **信息资源共享**:促进企业内部信息流通与共享,提高协作效率。 - **增强员工...

    尚学堂Spring学习笔记

    "尚学堂Spring学习笔记" 本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在...

    尚学堂Java笔记.pdf

    尚学堂Java笔记.pdf 本资源主要讲述Java语言的基础知识和应用,包括J2SDK、JRE、JDK、classpath、path、Java应用程序、递归调用等内容。 一、J2SDK和JRE Java2 Software Development Kit(J2SDK)是Java开发需要...

    OA系统需求说明书2.docx

    - **项目名称**:“尚学堂WebOA管理系统”,项目编号为“SXT-WEBOA-0101”。 - **产品范围**:根据招标书中5.2条款的规定确定。 - **产品标识** - 包括产品的全名、简称以及版本号,其中版本号为1.00。 - **...

    1.【尚学堂】全新2022版WEB前端HTML5.zip

    总的来说,这个【尚学堂】的WEB前端HTML5教程是全面学习Web前端开发的良好资源,特别是对于那些想要进入这个行业或希望提升HTML5技能的初学者来说,它提供了一个系统化的学习路径,覆盖了从基础到实践的各个环节。

    尚学堂_Hibernate3.3.2_项目源码

    尚学堂的Hibernate3.3.2项目源码提供了深入学习和实践Hibernate的机会,让我们一起深入探讨这个项目中的关键知识点。 首先,我们来看看Hibernate的核心概念。在Hibernate中,实体类代表数据库中的表,实体类的每个...

    OA项目实战,ssh+dwr开发的一个好项目

    OA(Office Automation)系统是企业信息化建设中的重要组成部分,主要用于提高工作效率,实现办公自动化。在这个项目中,SSH(Struts2、Spring、Hibernate)和DWR(Direct Web Remoting)两大技术框架被巧妙地结合在...

    javascript-尚学堂

    喜欢老马的人都知道,尚学堂的javascript,很强大

    尚学堂hibernate学习笔记(原版整理)

    优化是任何系统开发中的重要环节,对于Hibernate而言,可能涉及到缓存策略、批处理、延迟加载等方面的调整,以提高系统的响应速度和减少数据库压力。 12. **补充话题** 除了基础内容外,笔记还可能包含一些扩展...

Global site tag (gtag.js) - Google Analytics