在 IBM Worklight 中连接丢失后自动重新登录到领域

Posted

技术标签:

【中文标题】在 IBM Worklight 中连接丢失后自动重新登录到领域【英文标题】:Automatically relogging in to a realm after connection loss in IBM Worklight 【发布时间】:2014-05-29 12:10:42 【问题描述】:

我的问题如下:

我的应用程序受到涉及 LDAP 服务器的移动安全测试的保护。相应的领域称为 LDAPrealm。我使用基于表单的身份验证器 + 自定义 LDAP 登录模块。

当与 worklight 服务器的连接丢失然后重新建立时,我看到当前用户不再在 LDAP 领域中进行身份验证。

我想要的是能够在不让他再次输入凭据的情况下重新验证​​用户身份。

但是,由于移动安全测试中默认包含的其他领域仍对用户进行身份验证,因此 Worklight 服务器不会再次向客户端质询凭据,这会在尝试提交凭据时导致 j_security_check 错误。

作为旁注,这些凭据存储在加密的 json 存储中,用于离线身份验证和应用程序的使用。

所以我的问题是: 是否可以强制服务器为此LDAPrealm再次挑战客户端并使用submitLoginForm重新登录?

更一般地说,有没有办法在尝试再次登录之前从所有领域清除用户+设备?

编辑原因:之前的错误是由拼写错误引起的

【问题讨论】:

【参考方案1】:

如果用户先在线登录,然后断开连接,然后重新连接,调用

WL.Client.logout("LDAPRealm",onSuccess:stealthed_relog);

然后在发送凭据之前在stealthed_relog 中调用WL.Client.connect() 似乎具有所需的行为。

但是,当用户离线登录然后获得连接时,当我尝试使用 WL.Client.connect() 时,它说 WL.Client.connect 的另一个实例已被调用。

编辑:对于日志离线情况,在连接事件触发后不久应用程序会自动受到挑战(心跳的原因?我真的不知道),所以你只需要使用

login_clientside.submitLoginForm();

再次成功登录。

如果有人有更好的方法在 Worklight 中使用 ldap 服务器实现自动重新连接,请随时发布,我将不接受我的回答。

【讨论】:

以上是关于在 IBM Worklight 中连接丢失后自动重新登录到领域的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight - 如何重命名应用程序并更改其图标、初始图像

Worklight 6 + Dojo 丢失文件错误

IBM Worklight - “与服务器的连接不成功”

IBM Worklight 与 HttpAdapter 的连接正在重置

IBM Worklight 6.1 - 关于在项目中升级 Cordova 的问题

IBM Worklight 5.0.6 - 无法添加外部 Dojo 组件(需要 Dojo Dgrid 时出现脚本错误)