SharePoint中特定站点的用户权限检查

问题描述

|| 我需要检查特定用户是否可以以编程方式访问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))     

解决方法

如果您使用的是发布网站,则应依靠
PortalSiteMapProvider
CombinedNavSiteMapProvider
CurrentNavSiteMapProvider
GlobalNavSiteMapProvider
WebSiteMapProvider
等,具体取决于您的导航需求),因为此内容已被完全安全地精简,您将能够以最佳性能遍历整个树。 否则,应在SPWeb对象上使用the7,此方法将仅返回当前用户可访问的子站点。 希望它会有所帮助。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...