我正在尝试检查c#中SharePoint用户的权限,但我遇到了以下似乎有用的代码:
isGranted = spweb.DoesUserHavePermissions(userlogin, SPBasePermissions.EmptyMask | SPBasePermissions.ViewPages);
第一个参数是用户检查权限。第二个参数是检查用户是否拥有的权限。
我的问题是,bitmask或者emptymask和viewpages权限之间的结果是什么?这实际上是在检查什么权限?
答案 0 :(得分:6)
自EmptyMask
is defined as zero以来,结果与传递SPBasePermissions.ViewPages
而没有EmptyMask
的结果相同:
[Flags]
public enum SPBasePermissions
{
EmptyMask = 0×0000000000000000,
...
}
答案 1 :(得分:1)
它正在检查这两个权限。权限是按位标志。
我不知道实际值,但是说空面膜是:01000000,而ViewPage是00100000 - 那么OR'ing它们将是01100000 - 所以你把它们放在一起。
那么如果你想检查用户是否具有ViewPage权限,你可以获取OR值,并将它与ViewPage的值相对应,如果它是> 0然后你知道你有权限。
答案 2 :(得分:1)
枚举具有Flag
属性,表示您可以使用按位运算符组合值。
实际上,将EmptyMask
(0为0)与其他值相结合是没有意义的,因为0 | X
总是等于X
。只需使用其他值。