2013-03-18 63 views
2

我試圖檢查SharePoint用戶權限在C#和我碰到下面的代碼,似乎工作就來了:這個C#按位或結果是什麼?

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

第一個參數是要檢查的權限的用戶。第二個參數是檢查用戶是否有權限。

我的問題是,什麼是按位或之間的空白屏幕和viewpages權限?這實際上檢查什麼權限?

+2

請參閱此問題以獲取枚舉按位操作的詳細信息:http://stackoverflow.com/questions/1285986/flags-enum-bitwise-operations-vs-string-of-bits – dmck 2013-03-18 13:23:58

+2

最簡單的方法是將值到他們的基礎類型並找出你自己。 *按名稱猜測,'EmptyMask'可能是'0',並且在這裏沒有做任何事情,但我可能是完全錯誤的...... – 2013-03-18 13:24:41

回答

6

由於EmptyMaskis defined as zero,結果是一樣的傳遞SPBasePermissions.ViewPages沒有EmptyMask

[Flags] 
public enum SPBasePermissions 
{ 
    EmptyMask =     0×0000000000000000, 
    ... 
} 
+0

懷疑證實。 – 2013-03-18 13:26:24

+0

我猜想這個線索就是以這個名字命名的。 :) – 2013-03-18 13:38:54

1

它檢查兩個權限。權限是按位標誌。

我不知道實際值,但說空白掩碼是:01000000,ViewPage是00100000 - 然後OR'ing他們將01100000 - 所以你把他們兩個在一起。

因此,如果你想檢查用戶是否具有ViewPage權限,你可以採取OR'ed值,並將其與ViewPage的值進行比較,如果它大於0,那麼你知道你有權限。

1

枚舉有Flag屬性,這表示您可以結合使用按位運算符值。

實際上,將EmptyMask(即0)與另一個值結合是沒有意義的,因爲0 | X總是等於X。只需使用其他值。