1.MOSS中的权限结构

MOSS中的权限结构主要有三部分:网站权限,列表权限,个人权限。

网站权限由18种如下图:

列表权限由12种,如下图:

个人权限由三种,如下图:

2.权限级别

上面提供的就是基本的权限,不同的权限组成MOSS中的权限级别。MOSS本身为我们提供了一些权限级别,我们也可以根据自己的需求来自定义。

我们在自定义自己的权限级别的时候可以参考Moss本身的,在他的基础上进行修改,我们编辑现有的网站级别,里面提供了一个复制权限级别的功能,
我们可以复制一份在这个基础进行修改来定义我们自己的权限级别。

3.下图展示了MOSS权限,用户和权限对象之间的关系:

4.使用SharePoint对象模型控制权限

主要使用下面几个类:

SPUser,SPGroup,SPRoleDefinition,SPRoleAssignment。

SPRoleDefinition用于角色(即前面所说的“权限级别”)的定义

它的几个重要的属性有:

Name:角色名称
Description:角色描述
BasePermissions:角色的权限(就是在这个地方指定详细的权限)
另外,Type属性是SPRoleType枚举类型的,关于权限的枚举是SPBasePermissions

SPRoleAssignment用于权限的分配,它比较简单,只有三个public的属性:

Member:把权限分配给谁
Parent:在什么东西上分配权限
RoleDefinitionBindings:分配什么权限

Member是SPPrincipal类型的是SPUser和SPGroup的父类
Parent:实现了ISecurityxxxx接口
RoleDefinitionBindings:可以理解为SPRoleDefinition的一个集合

在2007里面每一个能分配权限的东西(SPWeb、SPList、SPListItem等)都会有一个RoleAssignments属性,它是一个SPRoleAssignmentCollection类型的属性,
用于分配权限

此外,在SPWeb里还有RoleDefinitions属性(只在SPWeb里有,也就是说角色只能定义在网站里)

举例如下:

我们要给一个用户(user)分配一个在列表(list)上的权限,权限使用了一个名叫“xxx”的角色

代码如下:

SPRoleAssignment ra = new SPRoleAssignment(user);

SPRoleDefinition rd = web.RoleDefinitions["xxx"];

ra.RoldDefinitionBindings.Add(rd);

list.RoleAssignments.Add(ra);

又比如,修改一个用户的权限:

SPRoleAssignment ra = list.RoleAssignments.GetAssignmentByPrincipal(user);

SPRoleDefinition rd = web.RoleDefinitions["xxx"];

ra.RoldDefinitionBindings.Add(rd);

ra.Update();但是,如果这个列表的权限之前是继承自网站的,

那么上面的代码并不会自动的修改这种继承,反而会抛出异常

我们必须手工解除这种继承关系:

list.BreakRoleInheritance(true);

参数中true的意思是把继承下来的权限重新copy过来(如果你不改它的话,它和网站的权限还是一样的),如果是false,则使用列表模版中定义的默认权限

如果要新建一个角色的话,直接new一个SPRoleDefinition,改改它的Name、Description、BasePermissions属性,然后再加到web.RoleDefinitions里就可以了;
或者在new的时候可以选择一个现有的角色copy过来,再改一改。这个代码我就不写了

此外,在权限方面还有一些其他的小改动:

在2003里,使用xxx.Permissions得到xxx(可以是SPWeb、SPList)的权限,但是在2007里Permissions属性也被废弃了

我们记得Permissions有一个非常有用的东西叫DoesUserHavePermissions来判断当前用户权限的,

在Permissions属性被废弃掉之后,这个方法移植到了SPWeb、SPList等类里

直接使用list.DoesUserHavePermissions就ok了

而且,现在这个方法不仅可以判断当前用户的权限,也可以判断指定用户的权限(通过SPUser)

另外,SPWeb、SPList及SPListItem也加入了CheckPermissions方法来判断用户权限,如果没有则丢一个异常出来,这和以前的xxx.Permissions.Demand方法是一致的

5.角色定义,分配,继承

角色由两部分组成:角色定义和角色分配。

角色定义,或者说权限级别,是与角色关联的权限列表。权限是 SharePoint 网站中唯一可控制的操作。例如,具有 Read 角色的用户可以浏览网站中的页面并查看列表中的项目。与 Windows SharePoint Services 2.0 中不同,在 Windows SharePoint Services 3.0 中,从不直接使用权限来管理用户权限。所有用户权限和组权限都通过角色来管理。角色定义是与特定对象绑定的权限集合。角色定义界定于网站范围内(例如,Full ControlReadContributeDesignLimited Access),并且在网站内的各个位置具有相同的意义,但其在同一个网站集内各网站之间的可能有所不同。角色定义也可以从父网站继承,就像权限一样。

角色分配是角色定义、用户和组以及范围之间的关系(例如,一个用户可能是列表 1 上的读者,而另一个用户是列表 2 上的读者)。通过角色分配表示的关系是使 Windows SharePoint Services 安全管理基于角色的关键。所有权限都通过角色来管理;您从不向用户直接分配权限,而只分配定义完善、一致、含义丰富的权限集合(角色定义)。通过角色分配向角色定义中添加或从中移除用户和组,以此来管理独有权限。

网站管理员可以使用“管理角色”页来自定义默认角色定义和创建其他自定义角色,其中,“管理角色”页列出了网站中可用的角色定义。

角色定义继承

Windows SharePoint Services 支持继承角色定义,就像它支持继承权限那样,而取消角色定义继承也要求取消权限继承。

每个 SharePoint 对象都可以拥有自己的权限集,也可以从其父容器继承权限。Windows SharePoint Services 不支持部分继承,对象将继承其父级的所有权限,并且也可以拥有一些自己的权限。权限可以是独有的,也可以是继承的。Windows SharePoint Services 不支持定向继承。例如,对象只能从其父容器继承,而不能从某些其他对象或容器继承。

当网站继承角色定义时,这些角色是只读的,就像继承的网站中的只读权限一样。用户将获得导航到拥有独有角色定义的父网站的链接。所有新网站(包括拥有独有权限的新网站)的默认设置都是从父网站继承角色定义。如果是独有权限,则角色定义可以还原为继承的角色定义,或编辑为本地角色定义。

根据下列禁止规则,网站中的角色定义继承对权限继承产生影响:

· 不能继承权限,除非它还继承角色定义。

· 不能创建独有角色定义,除非它还创建独有权限。

· 不能还原为继承的角色定义,除非它也还原网站中的所有独有权限。现有权限依赖角色定义。

· 不能还原为继承的权限,除非它也还原为继承的角色定义。网站的权限始终与网站的角色定义关联。

转载于:https://www.cnblogs.com/greeny/archive/2010/09/03/1816945.html

SharePoint中的权限体系相关推荐

  1. 理解SQL Server中的权限体系(下)----安全对象和权限

    在开始阅读本文之前,请确保你已经阅读过上一篇文章,文章地址: 理解SQL Server中的权限体系(上)----主体 简介 在上一篇文章中,我对主体的概念做了全面的阐述.本篇文章接着讲述主体所作用的安 ...

  2. x509mysql_涂抹mysql笔记-数据库中的权限体系

    涂抹mysql笔记-数据库中的权限体系 <>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确. mysql验证用户需要检查3项值:用户名.密码和主机来源(user.passwor ...

  3. mysql数据库应用的权限层级_涂抹MySQL--第5章 MySQL数据库中的权限体系 - 5.3权限级别(1)...

    5.3 权限级别 总的来说,MySQL数据库的权限从大的粒度上划分可以分成5类:全局.数据库.表.列.程序.通过对这5个大类权限的细分,可以精确地为某个用户分配从某台机器连接进来访问某个数据库下某个表 ...

  4. 关于SharePoint中管理列表项权限

    现况概述在SharePoint中对于列表的权限默认是只可以控制到列表级别,而对于列表下面的列表项,在SharePoint中是无法进行控制的. 需求概述现在我参与的项目中需要控制一个文档库中的文档.让这 ...

  5. moss2007 权限体系分析(深入到数据库结构的分析)

    SPS2007相对SPS2003来说,功能增强了很多,新的概念也增强了很多,在权限体系这块,SPS2007也是有比较大的增强,由于权限体系非常重要,所以我们对其作出比较详尽的分析. 1.SPS2007 ...

  6. Cognos8.3权限体系[转]

    http://braveheart.me.blog.163.com/blog/static/61714517200910410592141/ 关于Cognos8.3的权限体系中所涉及到如下对像: 用户 ...

  7. mysql权限层级体系_MySQL权限体系介绍

    官方手册:https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html MySQL是一个多用户的数据库,MySQL的用户可以分为两大 ...

  8. 分布式系统中,权限设计实践

    一.权限控制 1.业务背景 在复杂的业务系统中,权限管理是最基础的模块,通过各种授权结构模型,管理用户在产品中可访问和可操作的边界,以实现系统和数据安全管理的目的: 通常在系统的任何层面都会涉及到一定 ...

  9. rbac模型的特点和优势_权限体系设计:融合了组织和岗位的权限模型长啥样?...

    文章从RBAC的基本原理出发,结合案例对权限设计中一个职位对应多个岗位的的情况进行了说明,并分享了相关权限模型,供大家一起参考和学习. 传统RBAC与现实的距离 传统的RBAC(基于角色的访问权限控制 ...

最新文章

  1. 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
  2. CocoaPosd使用详解
  3. ubuntu更改默认python版本_更改Ubuntu默认python版本的方法
  4. Gibbs sampling [Gibbs采样]
  5. Sql Server 常用日期格式
  6. Java EE 8发生了什么? (第2部分)
  7. 【牛客 - 1080E】tokitsukaze and Segmentation(dp,递推,思维)
  8. 活跃在海底隧道的铁路“小蓝人”
  9. opencv 实现等值线_OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)...
  10. android audio arch
  11. JSP指令、动作和对象
  12. 骑士人才系统替换短信接口
  13. dw33d最新固件openwrt_【矿渣们的救赎】の 小米路由器mini刷OpenWrt
  14. 君正X1000开发板/方案开发介绍
  15. 关于yolov5出现报错 KeyError: ‘copy_paste‘之类Key问题解决办法
  16. 英语作文计算机国际会议开幕词,英文国际会议演讲稿范文
  17. 微信小程序页面回到顶端的方式
  18. vijosP1567子串计数
  19. 贝叶斯分析-学习笔记(超干的干货)
  20. 呵护眼睛,从小事做起

热门文章

  1. React开发(249):react项目理解 ant design form加个扩展样式
  2. 前端学习(2906):Vite 解决了 Webpack 哪些问题
  3. [css] 对比下px、em、rem有什么不同?
  4. [css] 浏览器是怎样判断元素是否和某个CSS选择器匹配?
  5. 前端学习(1796):前端调试之html/css介绍
  6. 第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络
  7. spring mvc学习(32):原生代码导入
  8. java学习(40):成员实例的定义和访问
  9. 二分法(leetcode分类解题,C++代码详细注释)
  10. 程序员的数学笔记3--迭代法