私はSharePointアプリケーションを作成していて、できるだけ頻繁に正しい方法で物事を実行したいと考えています。
サイト定義に一連のリストを展開していますが、規則を維持するために一連のGet()メソッドへのデータアクセスをロックダウンしたいと思います。
一部のリストでは、リスト定義にSecurityBits = "22"が設定されています。これは、リストアイテムのエントリをUIでのみ変更する必要があるためです。
虐待を避けたいSPSecurity.RunWithElevatedPrivileges
。また、デリゲートで機能SPSecurity.RunWithElevatedPrivileges
を使用できない場所の制限を回避したいと思います。return
これは、これを実施するための良い方法のようです。通常のセキュリティでリストアイテムを取得するためにリストを呼び出す場合は、を呼び出すことができますvar PostList = CoreLists.Posts
。昇格された権限で同じリストを呼び出す必要がある場合は、var PostList = CoreLists.SystemAccount.Posts
これはこれを行うための良い方法ですか?
public static class CoreLists
{
public static SPList Posts()
{
return SPContext.Current.Web.GetList(SPContext.Current.Web.ServerRelativeUrl + "/lists/CommunityPost");
}
public static class SystemAccount
{
public static SPList Posts()
{
using (var elevatedSite = new SPSite(SPContext.Current.Site.ID, SPContext.Current.Site.SystemAccount.UserToken))
using (var web = elevatedSite.OpenWeb())
return web.GetList(web.ServerRelativeUrl + "/lists/CommunityPost");
}
}
}