SharePoint中的权限体系

1.MOSS中的权限结构

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

网站权限由18种如下图:

clip_image002

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

clip_image002[5]

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

clip_image002[7]

2.权限级别

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

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

clip_image002[9]

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

clip_image002[11]

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MobaXterm_Personal_20.1最简单方式链接阿里云服务器

MobaXterm_Personal_20.1链接购买的阿里云服务器1.登录到阿里云首页2.阿里云首页3. 找到 服务器实例4. 重置密码5. 配置 MobaXterm_Personal_20.15.1 MobaXterm_Personal_20.1介绍6. 输入重置的密码1.登录到阿里云首页 2.阿里云首页 3. 找到 服务器实例 4. 重置密码 5. 配置 Mo…

机器学习和python学习之路精心整理技术书从入门到进阶

“机器学习/深度学习并不需要很多数学基础!”也许你在不同的地方听过不少类似这样的说法。对于鼓励数学基础不好的同学入坑机器学习来说,这句话是挺不错的。不过,机器学习理论是与统计学、概率论、计算机科学、算法等方面交叉的领…

FusionChart完全入门手册8

动画样式类型 FusionCharts做得最好的事情之一就是图表动画序列,这是用户静静乐道的。默认情况下,FusionCharts仅在数据绘制(柱状图、饼图、折线图等)时候使用动画。但是FusionCharts V3不限制你的想象力。 使用动画样式,你可以…

算法与数据结构+一点点ACM从入门到进阶吐血整理推荐书单(珍藏版)

学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 前言:技术书阅读方法论…

工作中使用的工具

工作中使用的工具分享一下后续持续更新

【软件开发底层知识修炼】四 深入浅出处理器之四 结合高速缓存以及TLB与虚拟内存

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录0、回顾1、高速缓存(Cache)的引入2、利用TLB加速地址翻译3、Cache与物理内存是如何映射的3.1、直接映射法&#xff1a…

研发中会使用到的工具

研发中会使用到的工具分享一下后续持续更新

【C#】【引用加原创】C#实现kalman滤波

最近为了项目,同事让我帮他做一个硬件版的kalman滤波器,实现对设备的kalman滤波,以验证他的理论算法。 犹豫了好几天,用dsp吧,我的kalman滤波算法比较简单,有点大材小用。刚好手里有一块arm调试版&#xff…

【软件开发底层知识修炼】五 gcc-C语言编译器

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录1、GCC与gcc2、gcc的幕后工作3、实用的gcc选项3.1、预处理选项-解决宏错误3.2、-S参数-辅助编写汇编程序的好方法3.3、获取系统头文件路径3.4…

思维模型分享

思维模型1.思维建模1.1 模型的用途1.2构建模型的3种方法1.3多样性预测定理1.4分类模型1.5 变差模型1.5.1 解释变差的百分比1.6 模型误差分解定理1.7 多模型思维1.8 对人类行为建模1.8.1 理性行为者模式2.模型思维2.1 正态分布2.2中心极限定理2.2.1 平方根法则2.2.2 检验显著性2…

认识再次提高。

今天晚上开会,又主动请缨拿回一个不可能完成的任务。 又是冒进了,最近对自己的认识又提升了一个高度:我发现我如果不给自己压力就会活得很无聊很无聊。 没有压力就没有动力,用我身上,太合适了。 比如,签合同…

在工程中最常用的 vim使用技巧

学习交流加(可免费帮忙下载CSDN资源):个人微信: liu1126137994学习交流资源分享qq群1(已满): 962535112学习交流资源分享qq群2: 780902027 文章目录1、vim编辑常用快捷键2、文件索引…

动态规划过程

动态规划过程应用背包问题:分享一下 有一个背包,容量是4磅,现有如下产品 1)要求达到的目标为装入的背包的总价值最大,并且要求重量不能超出 2) 要求转入的物品不能重复 思路分析:算法其实是模型建立的过程 …

Know more about RAC GES STATISTICS

GES 全称为Global Enqueue Services是RAC中重要的全局队列锁服务,V$GES_STATISTICS 动态性能视图汇聚了主要的GES STATISTICS 统计信息。为了更好地理解GES STATISTICS ,我们可以通过下表理解这些统计项的含义: V$GES_STATISTICS Reference…

【剑指offer - C++/Java】5、用两个栈实现队列

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 牛客网题目链接:用两个栈实现队列 文章目录1、题目分析2、代码Java代码:C代码3、总结题目描述: 用两个栈来实现一…

【剑指offer - C++/Java】6、旋转数组的最小数字

题目链接:旋转数组的最小数字 文章目录1、题目描述2、题目分析3、代码3.1 Java代码3.2、C代码4、总结1、题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小…

求一个有限长度字符串 最长的有序可重复字符串长度

求一个有限长度字符串 最长的有序可重复子串package acm;/*** author qxl*/ public class SequenceCharMax {/*** 输入一可重复的整数数组,求最长升序数组长度** 比如:* 输入:[1, 2, 3, 4]* 输出:4* 输入:[1, 5, 2, 3,…

发消息给非windows窗体程序

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; var WM_SHUTDOWN_THREADS: Cardinal; //无符号32位 type TForm1 class(TForm) Button1: TButton; Button2: TButton; Memo1: TMem…

设计模式-责任链模型

责任链模式场景: OA审批系统 CEO 审批项目 经费 500万<x ≤\leq≤ 1000万总监 审批的经费 300万 < x ≤\leq≤ 500万总监秘书 审批的经费 100万< x ≤\leq≤ 300万研发经理 审批的经费 50万 <x ≤\leq≤ 100万 传统方式 是 (接收到请求后&#xff0c;根据相应金额&…

【OS学习笔记】三 计算机的启动过程

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章迈进了汇编的大门&#xff0c;点击链接查看上一篇文章&#xff1a;汇编语言和汇编软件 上一篇文章大概学会以下内容&#xff1a; 了解汇编…