IBM Worklight: WL.Client.getUserName Не удается получить идентификатор пользователя сразу после аутентификации
Я сделал аутентификацию на основе адаптера, и в аутентификации проблем нет, и она работает нормально. Я столкнулся с некоторыми проблемами при получении идентификаторов активных пользователей. Код может объяснить вам немного больше
adapterAuthRealmChallengeHandler.handleChallenge = function(response){
var authRequired = response.responseJSON.authRequired;
if (authRequired == true){
if (response.responseJSON.errorMessage)
alert(response.responseJSON.errorMessage);
} else if (authRequired == false){
adapterAuthRealmChallengeHandler.submitSuccess();
setTimeout(function(){pageTransitionCall();},10000); //this code only works
pageTransitionCall(); //This throws null error in console
}
};
function pageTransitionCall(){
console.log(WL.Client.getUserName("AdapterAuthRealm"));
}
Как вы можете видеть, я пытался получить активное имя пользователя области.WL.Client.getUserName("AdapterAuthRealm")
работает только через некоторый промежуток времени, и я не уверен насчет временного интервала. По коду адаптера, как показано ниже
function submitAuthentication(username, password,userCred){
if (username==="worklight" && password === "worklight"){
WL.Logger.info("if");
var userIdentity = {
userId: userCred,
displayName: userCred,
attributes: {
foo: "bar"
},
loginName : userCred,
userName : userCred
};
WL.Server.setActiveUser("AdapterAuthRealm", userIdentity);
WL.Logger.info(JSON.stringify(userIdentity));
return {
authRequired: false
};
}
else
{
WL.Logger.info("else");
return onAuthRequired(null, "Invalid login credentials");
}
}
Я сомневаюсь, почему клиент не может получить ActiveUser. И я уверен, что мой код правильный и активный пользователь установлен, и я могу видеть в журнале сервера. Послеsetactvieruser
установлен только у меняreturn false
в adpter и почему клиент не может получить пользователя в момент и почему ему требуется задержка для получения. Я проверил как в Worklight V6.0, так и в Worklight V6.1.i создал среду Ipad.