Как получить все дочерние сайты в семействе веб-сайтов, если вошедший в систему пользователь не имеет разрешений на семейство веб-сайтов в интерактивном режиме с помощью JSOM?

Когда я пытаюсь получить все дочерние веб-сайты в семействе веб-сайтов в Sharepoint в Интернете с помощью jsom, если вошедший в систему пользователь не имеет разрешений для семейства веб-сайтов, я не могу получить все дочерние сайты.

Но я могу получить все дочерние сайты в семействе сайтов, если у вошедшего в систему пользователя есть разрешения на семейство сайтов.

Я хочу, даже если у пользователя есть разрешения на доступ к семейству веб-сайтов, получить все дочерние сайты в семействе веб-сайтов в Sharepoint в Интернете с помощью JavaScript.


person Deepu    schedule 11.01.2017    source источник


Ответы (2)


Это невозможно, потому что безопасность данных ограничена тем, к чему у пользователя есть доступ. Наличие возможности повышать привилегии на стороне клиента было бы огромной брешью в системе безопасности. В конечном итоге люди обычно либо дают очень маленькие разрешения везде для группы всех пользователей, либо используют релейный пользовательский API и учетную запись службы, у которой есть разрешения.

person baywet    schedule 12.01.2017
comment
Есть ли готовое решение для получения дочерних сайтов? - person Deepu; 12.01.2017
comment
Все авиалинии выполняются в контексте пользователя и его разрешений. Если вы не делаете собственный код на стороне сервера. Таким образом, данные всегда будут обрезаны только до того, к чему имеет доступ текущий пользователь. - person baywet; 12.01.2017
comment
скажите, пожалуйста, как получить дочерние сайты, передав пользовательские учетные данные, у которых есть разрешения на семейство сайтов, используя jsom. - person Deepu; 12.01.2017
comment
скажите, пожалуйста, как получить дочерние сайты, передав определенного пользователя, у которого есть разрешения на семейство сайтов, используя jsom. - person Deepu; 12.01.2017

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-коллекция-суб-сайт-использование-j .

person Vainktesh Kumar    schedule 27.04.2017