获取角色定义的可靠方法
Reliable way to get role definition
获取预定义角色(如 reader、admin)的角色定义 ID 的最佳方法是什么?
我正在尝试将文件夹配置为让成员只有读取权限。为此,我将删除现有的成员角色分配并向他们添加 reader 角色。 SharePoint REST API 要求我提供角色定义 ID,但我找不到可靠的方法。
看来我可以通过名称获得它_api/web/roledefinitions/getbyname('Read')
,但我担心如何处理非英语语言环境的情况。我希望可以按类型 _api/web/roledefinitions/getbytypekind(2)
搜索它,但我无法让它工作。它给我一个错误 Cannot find resource for the request getbytypekind.
另外,是否可以删除默认角色定义?
您可以通过
获取角色定义列表
https://xxxx.sharepoint.com/_api/Web/RoleDefinitions
然后可以通过id获取具体的角色(如read),所以我们不需要关心locale问题:
https://xxxx.sharepoint.com/_api/Web/RoleDefinitions(1073741826)
角色列表和id:
FullControl(Web/RoleDefinitions(1073741829))
Design(Web/RoleDefinitions(1073741828))
Edit(Web/RoleDefinitions(1073741830))
Contribute(Web/RoleDefinitions(1073741827))
Read(Web/RoleDefinitions(1073741826))
Limited Access(Web/RoleDefinitions(1073741825))
System.LimitedView(Web/RoleDefinitions(1073741926))
System.LimitedEdit(Web/RoleDefinitions(1073741927))
Create new subsites(Web/RoleDefinitions(1073741924))
View Only(Web/RoleDefinitions(1073741925))
我们可以使用默认角色或自定义自己的角色,所以我认为微软不需要提供API来删除内置角色。
虽然我们也可以使用 getbytype 方法,但是角色类型值的列表对用户来说不是很友好。(更多信息请参见下面的 link)
https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_RoleDefinitionCollectionGetById
https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_RoleDefinitionCollectionGetByType
It seems like I can get it by name
_api/web/roledefinitions/getbyname('Read'), but I'm concerned how to handle the case of non-English locale
没错,SP.RoleDefinition.name
property could vary per locale, so retrieving role definition by role type is definitely more reliable in this regard, SP.RoleDefinitionCollection.getByType
method可以用在这里,例如:
/_api/web/roledefinitions/getByType(<roletypeid>)
其中 roletypeid
对应于 SP.RoleType
enumeration
获取预定义角色(如 reader、admin)的角色定义 ID 的最佳方法是什么?
我正在尝试将文件夹配置为让成员只有读取权限。为此,我将删除现有的成员角色分配并向他们添加 reader 角色。 SharePoint REST API 要求我提供角色定义 ID,但我找不到可靠的方法。
看来我可以通过名称获得它_api/web/roledefinitions/getbyname('Read')
,但我担心如何处理非英语语言环境的情况。我希望可以按类型 _api/web/roledefinitions/getbytypekind(2)
搜索它,但我无法让它工作。它给我一个错误 Cannot find resource for the request getbytypekind.
另外,是否可以删除默认角色定义?
您可以通过
获取角色定义列表https://xxxx.sharepoint.com/_api/Web/RoleDefinitions
然后可以通过id获取具体的角色(如read),所以我们不需要关心locale问题:
https://xxxx.sharepoint.com/_api/Web/RoleDefinitions(1073741826)
角色列表和id:
FullControl(Web/RoleDefinitions(1073741829))
Design(Web/RoleDefinitions(1073741828))
Edit(Web/RoleDefinitions(1073741830))
Contribute(Web/RoleDefinitions(1073741827))
Read(Web/RoleDefinitions(1073741826))
Limited Access(Web/RoleDefinitions(1073741825))
System.LimitedView(Web/RoleDefinitions(1073741926))
System.LimitedEdit(Web/RoleDefinitions(1073741927))
Create new subsites(Web/RoleDefinitions(1073741924))
View Only(Web/RoleDefinitions(1073741925))
我们可以使用默认角色或自定义自己的角色,所以我认为微软不需要提供API来删除内置角色。
虽然我们也可以使用 getbytype 方法,但是角色类型值的列表对用户来说不是很友好。(更多信息请参见下面的 link)
https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_RoleDefinitionCollectionGetById https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_RoleDefinitionCollectionGetByType
It seems like I can get it by name _api/web/roledefinitions/getbyname('Read'), but I'm concerned how to handle the case of non-English locale
没错,SP.RoleDefinition.name
property could vary per locale, so retrieving role definition by role type is definitely more reliable in this regard, SP.RoleDefinitionCollection.getByType
method可以用在这里,例如:
/_api/web/roledefinitions/getByType(<roletypeid>)
其中 roletypeid
对应于 SP.RoleType
enumeration