【发布时间】:2016-03-01 05:21:03
【问题描述】:
场景:
如果应用程序终止,我想调用注销功能。我可以使用本机代码来做到这一点:
- (void)applicationWillTerminate:(UIApplication *)app
{
// Run Logout function
}
问题:
如何在 IBM mobilefirst 混合应用中做到这一点?
// *************************************************** ***
已编辑
首先,用户登录到应用程序,如果用户输入正确的用户名和密码,它会将用户身份添加到“loginRealm”中。
WL.Server.setActiveUser("loginRealm", userIdentity);
接下来,用户在不注销的情况下关闭应用程序。因此,当用户再次登录时,MFP 服务器将不会返回任何反馈,因为它会遇到此异常:
无法更改领域中已登录用户的身份 '登录领域'。应用程序必须先注销。
因此,我必须通过在适配器中将“loginRealm”设置为空来从 MFP 服务器注销用户;
WL.Server.setActiveUser("loginRealm", null);
上面这行代码在 authentication-config.xml 中定义的注销函数中。
客户端设备运行这行代码,会触发注销功能。此外,它会在成功后重新加载应用程序:
WL.Client.logout('loginRealm', {
onSuccess: WL.Client.reloadApp
});
我尝试过的步骤:
1) 在 WlcommonInit() 我添加了 WL.Client.updateUserInfo();如果 WL.Client.isUserAuthenticated("loginRealm") 返回 true 我将从服务器注销用户。但是,WL.Client.isUserAuthenticated("loginRealm") 将始终返回 false。这是因为,在 WL.Client.updateUserInfo(); 之后,标志需要一段时间(30 秒到 2 分钟)才能变为真。所以我的登录仍然失败并遇到同样的错误。
2) 我试图在用户单击登录按钮期间注销用户。但是由于reloadApp,应用程序会再次刷新并返回登录页面。我从 IBM mobilefirst 网站获得的注销代码。所以用户需要点击并输入2次才能登录到主菜单。
WL.Client.logout('loginRealm', {
onSuccess: WL.Client.reloadApp
});
我做错了吗?或者是否有任何其他方法可以在 WL.Client.updateUserInfo(); 之后立即让 WL.Client.isUserAuthenticated("loginRealm") 返回 true; ?可以去掉注销功能中reload app这行代码吗?
【问题讨论】:
标签: ios ibm-mobilefirst