webPermMasks
是两个 32 位整数,表示用户拥有哪些权限。
每个位代表一个权限。
(_spPageContextInfo.webPermMasks.High).toString(2)
(_spPageContextInfo.webPermMasks.Low).toString(2)
显示位
前高后低
在过去的美好时光中,计算机使用 8 位,有人将其命名为字节。
使用 8 位(8 个权限),您只能从 0 数到 255
因此,要在 8 位 CPU 上存储更多的 16 位(0-32768),您需要 2 个字节。
我们称它们为高字节和低字节
SharePoint 有 37 种权限
现在的计算机已经从可以处理 8 位的 CPU 发展到 16 位到32 位
目前 SharePoint 有37种不同的安全权限.. 不适合这32 位
就像很久以前一样,您需要两个 32 位值来编码权限
,一些具有常识的 Microsoft 工程师将其命名为High和Low值
SP.js 库(大多数页面上可用的标准)具有关于哪个 Permission 是哪个位数的信息
在开发者控制台中运行:
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)
网络烫发面具
_spPageContextInfo.webPermMasks.Low
_spPageContextInfo.webPermMasks.High
在两个 32 位整数中为您提供64 位(具有 37 个权限,只有少数用于高阶)
指示当前用户在当前页面上拥有的权限
所有 PermissionKinds (SP.PermissionsKnd.[name])
注意:这是位数,而不是值!
要检查某人是否有权限,您必须计算(总和)值,然后对高位和低位整数进行二进制检查。
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 );
使用未使用的空间(过去的故事)
SharePoint 仅使用高阶整数中的少数位。
然而,数据库存储所有 32 位......
当我们仍然构建 SharePoint 后端的东西时,我们会将那些未使用的位用于我们自己的权限方案。
我们让每个人都安装的免费试用版实际上是成熟的产品。
当他们购买许可产品时……它所做的只是在数据库中翻转一点。
J1 iSPT