【发布时间】:2011-12-15 09:53:06
【问题描述】:
我需要检查特定用户是否可以通过编程方式访问 SharePoint 中的网站/子网站。
注意:登录用户可以访问我的 SharePoint 网站中的几个网站。所以我必须只显示用户有权访问的网站。
我用过:
using (SPWeb web = new SPSite(url).OpenWeb())
{
SPWebCollection Sites = web.Webs;
foreach (SPWeb website in Sites)
{
SPUser loginUser = website.CurrentUser;
string username = loginUser.Name;
if (!website.IsRootWeb)
{
SPWebCollection subsites = website.Webs;
foreach (SPWeb supersubsite in subsites)
{
SPWebCollection thirdlevelsites = supersubsite.Webs;
foreach (SPWeb thirdlevel in thirdlevelsites)
{
thirdlevel.Site.CatchAccessDeniedException = false;
bool check = thirdlevel.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open);
if (check)
{
}
thirdlevel.Site.CatchAccessDeniedException = true;
}
}
}
}
}
但出现错误
bool check = thirdlevel.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open);
作为:
访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
【问题讨论】:
-
您是否要列出用户有权访问的所有站点和子站点?请详细说明一下。
-
是的.. 我有多个用户。很少有用户可以访问所有站点,很少有没有。我需要在显示之前检查用户对当前站点的权限。所以我不应该显示登录用户无权访问的站点。对于这种方法,我尝试了上面提到的代码,但得到了错误。
标签: c# sharepoint sharepoint-2010 sharepoint-api