clientcontext.executequeryasync在SharePoint 2010中提供访问被拒绝错误

时间:2017-03-02 10:19:44

标签: javascript sharepoint sharepoint-2010 csom

我有一个要求,我需要检查用户是否是任何特定SharePoint组的成员。为此,我使用下面的代码:

function IsCurrentUserMemberOfGroup(groupName, OnComplete) {
   var currentContext = new SP.ClientContext.get_current();
   var currentWeb = currentContext.get_web();
   var currentUser = currentContext.get_web().get_currentUser();
   currentContext.load(currentUser);

   var allGroups = currentWeb.get_siteGroups();
   currentContext.load(allGroups);
   currentContext.load(allGroups,'Include(users)');

   currentContext.executeQueryAsync(OnSuccess,OnFailure);

   function OnSuccess(sender, args) {
       // Success function callback  
       OnComplete(userInGroup);
   }

   function OnFailure(sender, args) {
      OnComplete(false);
   }    
}

如果当前用户是网站集管理员,那么此代码工作正常,但如果用户不是网站集管理员,那么这不起作用并给我以下错误:

access denied. you do not have permission to perform this action or access this resource

此错误发生在currentContext.executeQueryAsync(OnSuccess,OnFailure);

任何人都可以帮助我做错了什么以及为什么我会收到此错误?有没有解决方法呢?

提前致谢!

1 个答案:

答案 0 :(得分:0)

此代码对我不起作用,我不确定此代码或环境中出现了什么问题。所以我用以下代码替换了它,我能够满足我的要求:

<强>代码

var IsCurrentUserMemberOfGroup = function (groupName, OnComplete) {
   var userInGroup = false;
   $().SPServices({
       operation: "GetGroupCollectionFromUser",
       userLoginName: $().SPServices.SPGetCurrentUser(),
       async: false,
       completefunc: function (xData, Status) {
            if ($(xData.responseXML).find("Group[Name='" + groupName + "']").length == 1) {
                userInGroup = true;
            }
        }
    });
    OnComplete(userInGroup);
}

所以基本上我在这里使用SPServices并用SPServices代码替换代码。