混淆 SharePoint Online 中的 PermMask 值
Confusing PermMask values in SharePoint Online
我在 SharePoint Online 中使用 JSLink 时遇到了 PermMask 值,用于从 ctx.CurrentItem.PermMask
不同权限的值与微软的文档不匹配,知道这些值代表什么吗?还是必须将它们转换成其他格式?我没有遇到过这些值,期望管理员权限的值为 0x7fffffffffffffff
0x1b03c431aef - 编辑
0xb008431041 - 仅查看
0x1b03c4312ef - 贡献
0x1b03c5f1bff - 设计
0x7fffffffffffffff - 管理员
它是权限的总和。
例如:
仅查看包括以下权限。
ViewListItems = 1
ViewVersions = 64
CreateAlerts = 549755813888
ViewFormPages = 4096
CreateSSCSite = 4194304
ViewPages = 131072
BrowseUserInfo = 134217728
UseRemoteAPIs = 137438953472
UseClientIntegration = 68719476736
Open = 65536
总和为756052856897=0xb008431041
webPermMasks
是两个 32 位整数,表示用户拥有哪些权限。
每一位代表一个权限。
(_spPageContextInfo.webPermMasks.High).toString(2)
(_spPageContextInfo.webPermMasks.Low).toString(2)
显示位
高低
在美好的过去,计算机使用 8 位,有人将其命名为字节。
使用 8 位(8 个权限),您只能从 0 数到 255
因此,要在 8 位 CPU 上存储更多的 16 位 (0- 32768),您需要 2 个字节。
我们称它们为 High-Byte 和 Low-Byte
SharePoint 有 37 种权限
现在的计算机已经从可以处理 8 位到 16 位的 CPU 发展到 32 位
目前 SharePoint 有 37 个不同的安全权限..
不适合那些 32 位
就像很久以前一样,您需要两个 32 位值来编码权限
其中一些具有常识的 Microsoft 工程师将 High 和 Low 值命名为
SP.js 库(大多数页面上可用的标准)有关于哪个权限是哪个 位数的信息
运行 这在开发者控制台中:
for (var permLevelName in SP.PermissionKind.prototype) {
if (SP.PermissionKind.hasOwnProperty(permLevelName)) {
var permLevel = SP.PermissionKind.parse(permLevelName);
console.info(permLevelName,permLevel);
}
}
}
注意permLevel
是不是值,它是位数
SP.PermissionKind.openItems
是位数 6 因此值为 2^6
如果您将所有值相加,您将得到高阶和低阶权限的整数值。
注意 permLevel
对于 SP.PermissionKind.manageAlerts
是 第 39 位
这是高位整数,所以值为2^(39-31)
webPermMasks
_spPageContextInfo.webPermMasks.Low
_spPageContextInfo.webPermMasks.High
为您提供 两个 32 位整数中的 64 位(具有 37 个权限,只有少数在高阶中使用)
表示当前用户在当前页面上的权限 ]
所有 PermissionKinds (SP.PermissionsKnd.[name])
注意:这是位数,不是数值!
要检查某人是否有权限,
您必须计算(求和)值,然后 binary 检查高阶和低阶整数。
viewListItems: 1
addListItems: 2
editListItems: 3
deleteListItems: 4
approveItems: 5
openItems: 6
viewVersions: 7
deleteVersions: 8
cancelCheckout: 9
managePersonalViews: 10
manageLists: 12
viewFormPages: 13
anonymousSearchAccessList: 14
open: 17
viewPages: 18
addAndCustomizePages: 19
applyThemeAndBorder: 20
applyStyleSheets: 21
viewUsageData: 22
createSSCSite: 23
manageSubwebs: 24
createGroups: 25
managePermissions: 26
browseDirectories: 27
browseUserInfo: 28
addDelPrivateWebParts: 29
updatePersonalWebParts: 30
manageWeb: 31
anonymousSearchAccessWebLists: 32
useClientIntegration: 37
useRemoteAPIs: 38
manageAlerts: 39
createAlerts: 40
editMyUserInfo: 41
enumeratePermissions: 63
在脚本中使用
SP 库提供了检查各个级别的函数:
SP.PageContextInfo.get_webPermMasks().has( [bitnumber] );
SP.PageContextInfo.get_webPermMasks().has( SP.PermissionKind.enumeratePermissions );
使用未使用的 space(过去的故事)
SharePoint 使用高阶整数中的少量位。
然而数据库存储了所有 32 位...
当我们仍然构建 SharePoint 后端内容时,我们会将那些未使用的位用于我们自己的权限方案。
我们让大家安装的免费试用版实际上是成熟的产品。
当他们购买许可产品时..它所做的只是在数据库中翻转一位。
J1 iSPT
我在 SharePoint Online 中使用 JSLink 时遇到了 PermMask 值,用于从 ctx.CurrentItem.PermMask
不同权限的值与微软的文档不匹配,知道这些值代表什么吗?还是必须将它们转换成其他格式?我没有遇到过这些值,期望管理员权限的值为 0x7fffffffffffffff
0x1b03c431aef - 编辑
0xb008431041 - 仅查看
0x1b03c4312ef - 贡献
0x1b03c5f1bff - 设计
0x7fffffffffffffff - 管理员
它是权限的总和。
例如:
仅查看包括以下权限。
ViewListItems = 1
ViewVersions = 64
CreateAlerts = 549755813888
ViewFormPages = 4096
CreateSSCSite = 4194304
ViewPages = 131072
BrowseUserInfo = 134217728
UseRemoteAPIs = 137438953472
UseClientIntegration = 68719476736
Open = 65536
总和为756052856897=0xb008431041
webPermMasks
是两个 32 位整数,表示用户拥有哪些权限。
每一位代表一个权限。
(_spPageContextInfo.webPermMasks.High).toString(2)
(_spPageContextInfo.webPermMasks.Low).toString(2)
显示位
高低
在美好的过去,计算机使用 8 位,有人将其命名为字节。
使用 8 位(8 个权限),您只能从 0 数到 255
因此,要在 8 位 CPU 上存储更多的 16 位 (0- 32768),您需要 2 个字节。
我们称它们为 High-Byte 和 Low-Byte
SharePoint 有 37 种权限
现在的计算机已经从可以处理 8 位到 16 位的 CPU 发展到 32 位
目前 SharePoint 有 37 个不同的安全权限.. 不适合那些 32 位
就像很久以前一样,您需要两个 32 位值来编码权限
其中一些具有常识的 Microsoft 工程师将 High 和 Low 值命名为
SP.js 库(大多数页面上可用的标准)有关于哪个权限是哪个 位数的信息
运行 这在开发者控制台中:
for (var permLevelName in SP.PermissionKind.prototype) {
if (SP.PermissionKind.hasOwnProperty(permLevelName)) {
var permLevel = SP.PermissionKind.parse(permLevelName);
console.info(permLevelName,permLevel);
}
}
}
注意permLevel
是不是值,它是位数
SP.PermissionKind.openItems
是位数 6 因此值为 2^6
如果您将所有值相加,您将得到高阶和低阶权限的整数值。
注意 permLevel
对于 SP.PermissionKind.manageAlerts
是 第 39 位
这是高位整数,所以值为2^(39-31)
webPermMasks
_spPageContextInfo.webPermMasks.Low
_spPageContextInfo.webPermMasks.High
为您提供 两个 32 位整数中的 64 位(具有 37 个权限,只有少数在高阶中使用)
表示当前用户在当前页面上的权限 ]
所有 PermissionKinds (SP.PermissionsKnd.[name])
注意:这是位数,不是数值!
要检查某人是否有权限, 您必须计算(求和)值,然后 binary 检查高阶和低阶整数。
viewListItems: 1
addListItems: 2
editListItems: 3
deleteListItems: 4
approveItems: 5
openItems: 6
viewVersions: 7
deleteVersions: 8
cancelCheckout: 9
managePersonalViews: 10
manageLists: 12
viewFormPages: 13
anonymousSearchAccessList: 14
open: 17
viewPages: 18
addAndCustomizePages: 19
applyThemeAndBorder: 20
applyStyleSheets: 21
viewUsageData: 22
createSSCSite: 23
manageSubwebs: 24
createGroups: 25
managePermissions: 26
browseDirectories: 27
browseUserInfo: 28
addDelPrivateWebParts: 29
updatePersonalWebParts: 30
manageWeb: 31
anonymousSearchAccessWebLists: 32
useClientIntegration: 37
useRemoteAPIs: 38
manageAlerts: 39
createAlerts: 40
editMyUserInfo: 41
enumeratePermissions: 63
在脚本中使用
SP 库提供了检查各个级别的函数:
SP.PageContextInfo.get_webPermMasks().has( [bitnumber] );
SP.PageContextInfo.get_webPermMasks().has( SP.PermissionKind.enumeratePermissions );
使用未使用的 space(过去的故事)
SharePoint 使用高阶整数中的少量位。
然而数据库存储了所有 32 位...
当我们仍然构建 SharePoint 后端内容时,我们会将那些未使用的位用于我们自己的权限方案。
我们让大家安装的免费试用版实际上是成熟的产品。
当他们购买许可产品时..它所做的只是在数据库中翻转一位。
J1 iSPT