【问题标题】:SharePoint keeps on asking credentials in pop upSharePoint 不断在弹出窗口中询问凭据
【发布时间】:2020-06-16 22:13:10
【问题描述】:

我们创建了一个具有 Rest API 的 SharePoint 列表自定义表单,当具有 Contribute 访问权限的用户尝试提交表单时,他们会一次又一次地弹出请求凭据。尽管该功能适用​​于完全访问权限和网站集管理员用户。

页面在一段时间后也变得无响应。请帮忙

【问题讨论】:

  • 您已使用sharepoint-2013sharepoint-online 标记了您的问题。 SharePoint 2013 是 SharePoint 服务器的本地安装,而 SharePoint Online 是 Office 365 中的云服务 - 其中哪一个适合您的环境?

标签: rest sharepoint sharepoint-2013 sharepoint-online sharepoint-designer


【解决方案1】:

如果您有客户端 JavaScript 执行 REST 调用,它将始终在当前用户的上下文中运行,这意味着您不能在 REST 调用中执行当前用户无权执行的任何操作。

如果您使用的是使用集成 NTLM 安全性的 SharePoint Server 的本地安装(这意味着您的 Active Directory 用户通常会自动登录到 SharePoint 而无需输入其凭据),那么当您的代码尝试客户端 REST 调用时如果尝试执行当前用户未获得授权的操作,浏览器将自动提示他们输入具有访问权限的用户帐户的 AD 凭据。

如果您使用的是在线环境或没有集成安全性的环境,那么您的代码不会再次提示用户输入凭据,而是只会收到 401 Unauthorized。

如果您的 SharePoint 场正在使用与本地域的集成安全性,则在您尝试访问他们无权访问的资源时,无法直接阻止用户提示输入凭据.相反,您需要使用 REST API 来查看当前用户是否有权执行该操作,如果没有,则显示更友好的错误。

以下是一个例子,借用a previous stack exchange post检查用户的权限:

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);
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多