CAMLクエリを使用してコンテンツタイプのすべてのリストアイテムを取得していますが、現在のユーザーにそのファイルを表示する権限があるかどうかを知る必要もあります。Sharepoint 2010、現在のユーザーに基づいてSPListItemへのアクセスを確認する
どのように私はそれを確認することができませんその部分は分かりません。
このexmplaは、コンテンツタイプに関連するアイテムを取得する方法のリファレンスとして使用します。
感謝。
CAMLクエリを使用してコンテンツタイプのすべてのリストアイテムを取得していますが、現在のユーザーにそのファイルを表示する権限があるかどうかを知る必要もあります。Sharepoint 2010、現在のユーザーに基づいてSPListItemへのアクセスを確認する
どのように私はそれを確認することができませんその部分は分かりません。
このexmplaは、コンテンツタイプに関連するアイテムを取得する方法のリファレンスとして使用します。
感謝。
SharePointのデフォルトでは、コードはWeb要求を実行するユーザーとして偽装されます。したがって、CAMLクエリによって返されたアイテムは、すでにセキュリティトリムされています。つまり、結果セットには、現在のユーザーが「参照」できる項目のみが含まれます。
状況によっては、システムpriveligesを使用してCAMLクエリを実行する必要があります。そうするためにSPSite
オブジェクトは、システムアカウントのトークンを使用してオープンしましなければなりません:
using (SPSite elevatedSite = new SPSite("http://server-url", SPUserToken.SystemAccount))
{
// open web; list;
// execute caml query with system account priveliges.
}
あなたがチェック/メソッドDoesUserHavePermissions
で特定のリスト項目にアクセス権を確保することができます:
SPListItem item = //...
if (item.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser, SPBasePermissions.ViewListItems))
{
// futher actions if user has permission goes here.
}
重要あなたがSPUser
引数を使ってDoesUserHavePermissions
のオーバーロードを呼び出さなければならないことに注意してください。過負荷はサイトの「現在のユーザー」を使用しません。サイトがシステムアカウントトークンで開かれて以来のシステムアカウントはどれですか。
ありがとうtheEe.DoesHavePermission私のために働く。 –
他の質問、私は同じことをする必要がありますが、クレーム、そのtheresをもう一度行うには??、ありがとう。 –
Stefanからの上記の答えは間違っています。ページが匿名でアクセスされるとエラーになるためです。 'SPContext.Current.Web.CurrentUser is null'であるためです。誰かがこの問題に対処する答えを持っていますか? – DaRula
ユーザー*になりすましながらリソース*にアクセスしてみてください。あなたが承認されていない場合、SPはあなたに知らせます。 –