2

我正在尝试在 c# 中检查 SharePoint 用户的权限,并且遇到了以下似乎有效的代码:

isGranted = spweb.DoesUserHavePermissions(userlogin, SPBasePermissions.EmptyMask | SPBasePermissions.ViewPages);

第一个参数是要检查权限的用户。第二个参数是检查用户是否有权限。

我的问题是,按位或 emptymask 和 viewpages 权限之间的结果是什么?这实际上是在检查什么权限?

4

3 回答 3

6

由于EmptyMask 被定义为零SPBasePermissions.ViewPages,结果与不传递 相同EmptyMask

[Flags]
public enum SPBasePermissions
{
    EmptyMask =                 0×0000000000000000,
    ...
}
于 2013-03-18T13:25:37.023 回答
1

它正在检查这两个权限。权限是按位标志。

我不知道实际值,但说 Empty Mask 是:01000000,而 ViewPage 是 00100000 - 然后 OR'ing 它们将是 01100000 - 所以你把它们放在一起。

因此,如果您想检查用户是否具有 ViewPage 权限,您可以取 OR'ed 值,并将其与 ViewPage 的值相比较,如果它 > 0,那么您知道您有权限。

于 2013-03-18T13:25:22.167 回答
1

枚举具有Flag属性,表明您可以使用按位运算符组合值。

实际上,将EmptyMask(0)与另一个值组合起来是没有意义的,因为0 | X它总是等于X。只需使用其他值。

于 2013-03-18T13:26:42.320 回答