clientcontext.executequeryasync выдает ошибку "Отказано в доступе" в SharePoint 2010
У меня есть требование, в котором мне нужно проверить, является ли пользователь членом какой-либо определенной группы 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 ответ
Этот код не работал для меня, и я не был уверен, что не так в этом коде или в среде. Поэтому я просто заменил это на приведенный ниже код и смог выполнить мое требование:
Код
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.