rest - SharePoint 不断在弹出窗口中询问凭据
问题描述
我们创建了一个具有 Rest API 的 SharePoint 列表自定义表单,当具有 Contribute 访问权限的用户尝试提交表单时,他们会一次又一次地弹出请求凭据。尽管该功能适用于完全访问权限和网站集管理员用户。
一段时间后,页面也变得无响应。请协助
解决方案
如果您有客户端 JavaScript 执行 REST 调用,它将始终在当前用户的上下文中运行,这意味着您不能在 REST 调用中执行当前用户无权执行的任何操作。
如果您使用的是使用集成 NTLM 安全性的 SharePoint Server 的本地安装(这意味着您的 Active Directory 用户通常会自动登录到 SharePoint 而无需输入他们的凭据),那么当您的代码尝试客户端 REST 调用时执行当前用户未授权的操作,浏览器将自动提示他们输入具有访问权限的用户帐户的 AD 凭据。
如果您使用的是在线环境或没有集成安全性的环境,那么您的代码不会重新提示用户输入凭据,而是只会收到 401 Unauthorized。
如果您的 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);
});
}
推荐阅读
- wordpress - Nginx 配置到容器内的 Wordpress
- mysql - 如何在 MYSQL 中生成唯一令牌
- javascript - nodejs 在生产(Heroku)中不起作用,而在开发中完全正常(在我的本地主机中)
- javascript - 我可以使用 vue.js 在选择选项中设置动态工具提示吗?
- git - git:将最后三个提交压缩在一起
- bash - 追加两个文件不同的总记录
- flutter - 弹出堆栈后如何调用initstate或didchangedependencies
- mysql - 如何使用 ST_Distance_Sphere 从 MySQL 中仅获取一列
- ssl - 在 Python 请求中使用 HTTPS 代理的问题
- amazon-web-services - 如何将特定字段从 EventBridge 输入发送到其目标