我已经完成了基于适配器的身份验证,并且身份验证没有问题,并且工作正常。我在获取活动用户用户身份方面遇到了一些问题。代码可能会向您解释更多
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");
}
}
我的疑问是为什么客户端无法检索活动用户。而且我确信我的代码是正确的并且设置了活动用户,我可以在服务器日志中看到。设置后,我setactvieruser
只有return false
在适配器中,为什么客户端不能立即检索用户以及为什么需要延迟检索. 我已经在 Worklight V6.0 和 Worklight V6.1 中进行了验证。我已经创建了 Ipad 环境。