如果登录用户在使用JSOM联机的sharepoint中没有对网站集的权限,如何获取网站集下的所有子网站?

时间:2017-01-11 13:04:38

标签: sharepoint-online sharepoint-jsom

当我尝试使用jsom在Sharepoint中获取网站集下的所有子网站时,如果登录用户没有网站集权限,我将无法检索所有子网站。

但如果登录用户拥有网站集权限,我可以获取网站集下的所有子网站。

我想,即使用户拥有网站集权限,也可以使用JavaScript在线检索Sharepoint网站集下的所有子网站。

2 个答案:

答案 0 :(得分:1)

这是不可能的,因为数据是根据用户有权访问的内容进行修整的。能够升级权限客户端将是一个巨大的安全漏洞。人们通常最终会做的事情是在所有用户组的任何地方提供非常小的权限,或者使用中继自定义API和具有权限的服务帐户。

答案 1 :(得分:0)

getAllWebs: function (siteUrl, success, error) {
    var ctx = new SP.ClientContext(siteUrl);
    var web = ctx.get_site().get_rootWeb();
    var result = [];
    var level = 0;
    var getAllWebsInner = function (web, result, success, error, isChild, siteUrl) {
        level++;
        var ctx = web.get_context();
        var webs = web.get_webs();

        ctx.load(webs, 'Include(Title,Url,Webs)');
        ctx.executeQueryAsync(
            function () {

                for (var i = 0; i < webs.get_count(); i++) {
                    var web = webs.getItemAtIndex(i);
                    if (isChild)
                        siteHierarchy.subSiteInfo.push({ Title: web.get_title(), SiteUrl: web.get_url(), ParentUrl: siteUrl });
                    else
                        siteHierarchy.siteInfo.push({ Title: web.get_title(), SiteUrl: web.get_url(), Subsite: [] });
                    result.push(web);
                    if (web.get_webs().get_count() > 0) {
                        getAllWebsInner(web, result, success, error, true, web.get_url());
                    }
                }

                level--;
                if (level == 0 && success) {
                    success(result);
                }
            },
            error);
    };
    getAllWebsInner(web, result, success, error, false, siteUrl);
}

基于https://sharepoint.stackexchange.com/questions/130403/most-efficient-way-to-get-all-sub-sites-under-a-site-collection-sub-site-using-j的“Vadim Gremyachev”的asnwer。