2

C# で SharePoint ユーザーのアクセス許可を確認しようとしていますが、動作しているように見える次のコードに出くわしました。

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

最初の引数は、権限を確認するユーザーです。2 番目の引数は、ユーザーが持っているかどうかを確認するパーミッションです。

私の質問は、bitwise-or の間の emptymask と viewpages パーミッションの結果は何ですか? これは実際にどの許可に対してチェックしていますか?

4

3 に答える 3

6

EmptyMask は zero として定義されているため、結果はSPBasePermissions.ViewPagesnoを指定して渡した場合と同じになりEmptyMaskます。

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

列挙にはFlag属性があり、ビットごとの演算子を使用して値を組み合わせることができることを示します。

実際には、これはEmptyMask(0 である) を別の値と組み合わせても意味がありませ0 | XX。他の値を使用してください。

于 2013-03-18T13:26:42.320 に答える
1

両方の権限に対してチェックしています。アクセス許可はビットごとのフラグです。

実際の値はわかりませんが、Empty Mask は 01000000 で、ViewPage は 00100000 であるとします。これらを OR すると 01100000 になります。つまり、両方を一緒に取得します。

したがって、ユーザーが ViewPage 権限を持っていることを確認したい場合は、OR 演算された値を取り、それを ViewPage の値に対して AND します。それが > 0 であれば、権限があることがわかります。

于 2013-03-18T13:25:22.167 に答える