1. 获取当前用户信息(current user):

var currentUserInfo = "{0}/_api/Web/CurrentUser"; // {0} -> web Absolute Url

返回的数据:

2. 获取站点权限信息(site permission):

var sitePermissionsInfo = "{0}/_api/Web/roleassignments?$expand=RoleDefinitionBindings,Member&$select=Member/Title,Member/Id,Member/IsHiddenInUI,Member/PrincipalType,RoleDefinitionBindings/Name,RoleDefinitionBindings/Order,Member/Users,Member/Groups&$filter=Member/IsHiddenInUI eq false&$orderby=Member/Title"; // {0} -> web Absolute Url

返回的数据与在站点 Site Permissions 页面看到的信息一样,此处有以下两点信息需要注意:

(1) user类型的 PrinciplalType 值为1,user group类型的 PrincipalType 值为8,domain group类型的 PrincipalType值为4;

(2) RoleDefinitionBindings中的 Order属性标识了该权限在站点集的 Permission Levels 中的位置顺序,Order值 从1 开始,详情可参考此页;默认情况下,站点自有权限级别Full Control 的 Order 为1;自定义的权限级别Order值都非常大,可通过 /_api/web/RoleDefinitions 来查看站点的权限级别,示例数据可参考下图;

3. 获取站点所有用户(site users):

var siteUsersInfo = "{0}/_api/Web/siteusers?$filter=IsHiddenInUI eq false and PrincipalType eq 1&$orderby=Title"; // {0} -> web Absolute Url

返回的数据与 /_layouts/15/people.aspx?MembershipGroupId=0 中的数据类似,此时不仅可以获取用户的 Title, Email, LoginName 及 Id,还可以通过 IsSiteAdmin 来得知该用户是否是 site collection administrator,也可以通过 IsHiddenInUI 来得知该用户是否是隐藏用户,而且,此处需要注意的是,返回的数据不仅包含当前站点的所有用户,还包括子站点的用户,甚至包含域用户(比如:sharepoint\system, NT AUTHORITY\LOCAL SERVICE等):

4. 获取站点所有用户组(site groups):

var siteGroupsInfo = "{0}/_api/web/roleassignments/groups?$filter=IsHiddenInUI eq false and PrincipalType eq 8&$orderby=Title desc"; // {0} -> web Absolute Url

返回的数据如下,注意,此处返回的user groups指的是当前站点(web)下的用户组,并不包含子站点(sub site)的用户组;

5. 获取 列表/文档库 权限信息(list or library permission):

var listPermissionURI = "{0}/_api/Web/Lists(guid'{1}')?$expand=RoleAssignments/Member,RoleAssignments/RoleDefinitionBindings&$select=Title,Id,RoleAssignments/Member/Title,RoleAssignments/Member/Id,RoleAssignments/Member/IsHiddenInUI,RoleAssignments/Member/PrincipalType,RoleAssignments/RoleDefinitionBindings/Name,RoleAssignments/RoleDefinitionBindings/Order,RoleAssignments/Member/Users,RoleAssignments/Member/Groups,HasUniqueRoleAssignments&$filter=RoleAssignments/Member/IsHiddenInUI eq false&$orderby=RoleAssignments/Member/Title desc"; // {0} -> web Absolute Url, {1} -> GUID of list/library, ------------------ $filter doesn't work, $orderby doesn't work

返回的数据如图,和site permission的数据结构类似,内容就是在 List Permission或Library Permission页面看到的内容;(我的代码中,$filter和$orderby不起作用,可能是由于层级太多导致的,比如 RoleAssignments/Title就可以起作用,但达到三个层级 RoleAssignments/Member/Title时就不再起作用了)

6. 获取文件夹权限信息(folder permission):

var folderPermissionInfo = "{0}/_api/Web/GetFolderByServerRelativeUrl('{1}')/ListItemAllFields?$expand=RoleAssignments/Member,RoleAssignments/RoleDefinitionBindings&$select=RoleAssignments/Member/Title,RoleAssignments/Member/Id,RoleAssignments/Member/PrincipalType,RoleAssignments/RoleDefinitionBindings/Name,RoleAssignments/RoleDefinitionBindings/Order,HasUniqueRoleAssignments";  //{0} -> web Absolute Url, {1} -> server-relative url of folder

返回的数据如下,与列表权限的数据结构几乎一致;但是,此种方法不能用作获取Library权限信息;

7. 获取文件权限信息(file permission):

var filePermissionInfo = "{0}/_api/Web/GetFileByServerRelativeUrl('{1}')/ListItemAllFields?$expand=RoleAssignments/Member,RoleAssignments/RoleDefinitionBindings&$select=RoleAssignments/Member/Title,RoleAssignments/Member/Id,RoleAssignments/Member/PrincipalType,RoleAssignments/RoleDefinitionBindings/Name,RoleAssignments/RoleDefinitionBindings/Order,HasUniqueRoleAssignments"; //{0} -> web Absolute Url, {1} -> server-relative url of file

返回的数据如下,与文件夹权限的数据结构一致;

8. 获取用户组中的用户信息(users in a group):

var usersInGroupInfo = "{0}/_api/Web/SiteGroups/GetById({1})/Users?$orderby=Title"; //{0} -> web Absolute Url, {1} -> group ID

返回的数据如下,

9. 检查 站点、列表、文档库、文件夹或文件是否有独立权限:

var uniquePermissionOfSite = "{0}/_api/Web/HasUniqueRoleAssignments";  //{0} -> web Absolute Url
var uniquePermissionOfList = "{0}/_api/Web/Lists(guid'{1}')/HasUniqueRoleAssignments"; // {0} -> web Absolute Url, {1} -> guid of list/library
var uniquePermissionOfFolder = "{0}/_api/Web/GetFolderByServerRelativeUrl('{1}')/ListItemAllFields/HasUniqueRoleAssignments"; //{0} -> web Absolute Url, {1} -> server-relative url of folder
var uniquePermissionOfFile = "{0}/_api/Web/GetFileByServerRelativeUrl('{1}')/ListItemAllFields/HasUniqueRoleAssignments"; //{0} -> web Absolute Url, {1} -> server-relative url of file

10. 根据 Id 获取 用户、用户组,根据Id获取用户所处用户组,以及根据Id获取用户组中的用户;

//get user by id, {0} is web absolute url, {1} is user id
{0}/gb0acb/_api/Web/GetUserById({1})
//get groups of a user, {0} is web absolute url, {1} is user id
{0}/_api/Web/GetUserById({1})/groups //get group by id, {0} is web absolute url, {1} is group id
{0}/_api/Web/sitegroups({1})
//get users in a group, {0} is web absolute url, {1} is group id
{0}/_api/Web/SiteGroups/GetById({1})/Users

11.

SharePoint 2013 - REST API about Security的更多相关文章

  1. SharePoint 2013 JavaScript API 记录

    1.获取创建者字段(Author),oListItem为SPListItem对象 oListItem.get_item('Author')只能获取到对象,获取用户名要用oListItem.get_it ...

  2. SharePoint 2013 - REST API about Content

    1. 获取所有子站点信息(Sub Site): var subSitesInfo = "{0}/_api/Web/WebInfos?$orderby=Title desc"; // ...

  3. python 链接sharepoint 2013 REST api

    import requests,simplejson from requests_ntlm import HttpNtlmAuth p1 = requests.get("http://you ...

  4. [MSDN] 使用 SharePoint 2013 中的 JavaScript 库代码完成基本操作

    MSDN:http://msdn.microsoft.com/zh-cn/library/jj163201.aspx 了解如何编写代码以在 SharePoint 2013 中使用 JavaScript ...

  5. SharePoint 2013创建WCF REST Service

    SharePoint 2013为开发者提供了丰富的REST API,方便了我们在客户端操作List中的数据.当然我们也可以在SharePoint 2013中创建自定义的REST Service,比如通 ...

  6. SharePoint 2013 Search REST API 使用示例

    前言:在SharePoint2013中,提供Search REST service搜索服务,你可以在自己的客户端搜索方法或者移动应用程序中使用,该服务支持REST web request.你可以使用K ...

  7. 在 SharePoint 2013 中选择正确的 API 集

    决定使用哪个 API 集的因素   您可以在多个 API 集中选择一个来访问 SharePoint 2013 平台.您使用哪一个 API 集取决于以下因素: 应用程序的类型. 可能的类型包括但不限于以 ...

  8. How to Call SharePoint 2013 API Service to Query The Lists

    How to Call SharePoint 2013 API In SharePoint 2013, we can query the list by it owner service, then ...

  9. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

    上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...

随机推荐

  1. 对EM算法的理解

    EM算法中要寻找的参数θ,与K-means聚类中的质心是对应的,在高斯混合模型中确定了θ,便可为样本进行类别的划分,属于哪个高斯分布的概率大就是哪一类,而这一点与K-means中的质心一样,质心确定了 ...

  2. 编写高质量代码:Web前端开发修炼之道(三)

    第五章:高质量的Javascript 这章的内容我看的最久,这是跟我js基础没打好有着莫大的关系,但是还是耐着性子看完了, 不懂的东西都是百度上搜索,理解后再继续.下面是记录下来的笔记. 1)如何避免 ...

  3. request.upload.addEventListener in not a function。

    本人在使用vue开发一套后台系统时,碰到了一个上传文件的需求,因为平时做的上传是使用ajax的方式来进行上传. 现在是使用axios来进行上传,方式没有什么改变: npm i  axios  直接上 ...

  4. 本科生毕业论文->计算机类(1)

    写在前面:作为一个计算机类学生,本文只是面向计算机类本科论文进行了一些小经验总结,每个学校的论文要求不一致,具体的参考规范可以看学校的通知,毕业论文作为毕业的一个重要审核标准,写好毕业论文是非常重要的 ...

  5. android 报错: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/AnimatorCompatHelper;

    在使用SmartRefreshLayout时,报 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/a ...

  6. thymeleaf常用语法

    常用标签语法:①th:text<span th:text="${name}">1</span>注释:如果${name}有值则将替换掉1的值,若无则为1 ②t ...

  7. jQuery练习 | 提交表单验证

    执行函数时,raturn false可阻止标签(例如超链接)的事件发生,从而达到提交表单的效果 <!DOCTYPE html> <html lang="en"&g ...

  8. selenium+Python(Js处理click失效)

    有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是 click 事件失效了. 问题: 1.在练习百度的搜索设置按钮时,点保存设置按钮,al ...

  9. An internal error occurred during: "Initializing Java Tooling". Eclipse启动发生的错误

    An internal error occurred during: “Initializing Java Tooling” 错误经常是莫名其妙的出现这种总错误,解决办法: 1.eclipse -&g ...

  10. 使用NDK编译含JNI的Android项目常见问题解决方案

    有时候,自己下载的或者拷贝过来的JNI项目出现莫名错误,通常是找不到头文件,可能解决方案如下: Removing the C nature: The only way I could find to ...