首页 > 解决方案 > _api/web/siteusers 在我检查用户权限之前不会返回用户

问题描述

如果我查询尚未登录到我们的新 SharePoint 网站的用户使用

_api/web/siteusers(@v)?@v='User i:0#.f|membership|someUser@amc.edu' 

我没有得到任何结果。如果我然后只是在线访问 SP 中的权限并检查是否someUser有权限(他们可能有也可能没有),那么只需检查someUser's 权限现在_api/web/siteusers行为正确。我看到了一些处理问题的链接的引用,但想知道它在 sprLib 中是如何工作的。

有谁知道如何确保sprLib中的用户?

参考链接:

标签: javascriptjquerysharepoint

解决方案


您可以使用 rest api 来确保用户。

function ensureUser(webUrl,loginName)
{
   var data = { 'logonName': loginName }; 
   return $.ajax({
      url: webUrl + "/_api/web/ensureuser",
      type: "POST",      
      data: JSON.stringify(data),
      headers: {
         "X-RequestDigest": $("#__REQUESTDIGEST").val(),
         "Accept": "application/json;odata=verbose",
     "Content-Type": "application/json;odata=verbose"
      }
   });  
}

var loginName = 'user login name'
ensureUser(_spPageContextInfo.webAbsoluteUrl,loginName)
.done(function(data)
{
    console.log('success');
})
.fail(function(error){
    console.log(error);
});

检查用户权限将根据我的经验调用服务器端确保用户,以便您_api/web/siteusers之后可以通过。

更新:

不确定你的意思是 sprestlib。

<script src="https://cdn.jsdelivr.net/gh/gitbrent/sprestlib@1.8.0/dist/sprestlib.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script>
    sprLib.rest({
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/ensureuser",
        data: "{ 'logonName': 'i:0#.f|membership|testa@xxxxxx.onmicrosoft.com'}",
        type: "POST",
        headers: {
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "Accept": "application/json;odata=verbose"
        }
    })
        .then(function () { console.log("log"); })
        .catch(function (errMsg) { console.error(errMsg) });

</script>

推荐阅读