SharePoint продолжает запрашивать учетные данные во всплывающем окне - PullRequest
0 голосов
/ 04 марта 2020

Мы создали одну пользовательскую форму списка SharePoint с API-интерфейсом Rest, и когда пользователи, имеющие доступ к Contribute, пытаются отправить форму, они снова и снова просят ввести учетные данные. Хотя функциональность работает нормально с пользователями полного доступа и администраторов семейства сайтов.

страница также перестает отвечать на запросы через некоторое время. Пожалуйста, помогите

1 Ответ

0 голосов
/ 04 марта 2020

Если у вас есть клиентская JavaScript, выполняющая вызовы REST, она всегда будет выполняться в контексте текущего пользователя, что означает, что вы не можете делать в вызове REST ничего, что текущий пользователь не имеет разрешения делать самому.

Если вы используете локальную установку SharePoint Server, которая использует встроенную безопасность NTLM (то есть пользователи Active Directory обычно автоматически входят в SharePoint без ввода своих учетных данных), то когда ваш код пытается выполнить клиент Сторонний вызов REST, который пытается выполнить действие, на которое текущий пользователь не авторизован, браузер автоматически запросит у них учетные данные AD для учетной записи пользователя, имеющей доступ.

Если вы используете онлайн-среду или один без встроенной защиты, и вместо того, чтобы повторно запрашивать у пользователей учетные данные, ваш код просто получит 401 Несанкционированный.

Если ваша ферма SharePoint использует интегрированную защиту с вашим локальным доменом, нет никакого способа напрямую запретить пользователю запрашивать учетные данные при попытке доступа к ресурсу, к которому у него нет доступа. Вместо этого вам нужно будет использовать REST API, чтобы увидеть, есть ли у текущего пользователя разрешение на выполнение действия, и отобразить более дружественную ошибку, если они этого не делают.

Ниже приведен пример, заимствованный из предыдущее сообщение о стеке о проверке прав пользователя:

function checkPermissions() {
    var call = jQuery.ajax({
        url: _spPageContextInfo.webAbsoluteUrl +
            "/_api/Web/effectiveBasePermissions",
        type: "GET",
        dataType: "json",
        headers: {
            Accept: "application/json;odata=verbose"
        }
    });

    call.done(function (data, textStatus, jqXHR) {
        var manageListsPerms = new SP.BasePermissions();
        manageListsPerms.initPropertiesFromJson(data.d.EffectiveBasePermissions);

        var manageLists = manageListsPerms.has(SP.PermissionKind.manageLists);

        var message = jQuery("#message");
        message.text("Manage Lists: " + manageLists);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...