1

我想限制用户访问列表。我有一个访问该列表的自定义 Web 部件。但是如果我限制访问,代码也无法访问它并抛出异常。

那么有没有办法让用户无法通过浏览器访问列表,但用户访问的Webpart可以呢?

4

1 回答 1

1

是的,最好的方法是使用系统帐户打开包含站点集合:

SPWeb ctxWeb = SPContext.Current.Web;
using (SPSite adminSite= new SPSite(ctxWeb.Site.ID, SPUserToken.SystemAccount))
{  
  using (SPWeb adminWeb = adminSite.OpenWeb(ctxWeb.ID))
  {
    SPList adminList = adminWeb.Lists["TheRestrictedList"]; 
  } 
}

从使用特定用户令牌打开的网站集中检索到的每个对象都表现为给定用户直接访问该元素。

由于我们SPSite使用系统帐户令牌打开,因此无论登录用户如何,我们都可以完全控制对象。

于 2012-06-12T12:40:48.290 回答