我已经推出了一些使用ionic3和firebase javascript angularfire2身份验证的商业Android和iOS应用程序。我开始收到用户投诉,称用户必须在一段时间后重新登录。一段时间后(感觉就像在应用程序中处于> 24 小时的不活动状态),用户将注销。大多数投诉都与IOS应用程序有关,而其他一些iOS用户已经报告了数周多的不活动状态,并且仍然需要在同一应用程序中登录。这些用例似乎是随机的,也许它们是随机的,我将它们添加到这里只是为了完整。
我使用的代码非常简单,并且根据文档。
this.afAuth.auth.setPersistence('LOCAL');
this.afAuth.authState.subscribe(
(user) => {
if (!user) {
//Logout
this.logout.next({});
}
else {
//Login
this.authenticated.next(user);
}
}
);
注销和认证是主题。
我为解决它所做的事情:
- 将持久状态设置为本地。尽管火力基地现在表明这不再是必需的。Firebase 项目中不再有任何选项可以指定会话时长。
- 将所有内容更新到最新版本。
- 根据最新的 Firebase 文档,手动刷新或存储令牌是不必要的。
我仍然可以尝试的事情:
- 后台刷新插件是否应该帮助不让会话令牌过期?(即使Firebase声称它不会过期)?
- 从 Firebase 导入 * 和 AngularFire2 之间是否存在冲突?
离子 3.9.2 火力基地 4.10.1 棱角火2 5.0.0-RC.6
还有其他人在持久登录方面遇到问题吗?或者提示如何解决这个问题?
更新: 这只会影响用户接近空间限制的 IOS,请参阅下面的备注。
对于科尔多瓦应用程序的 iOS 设备中,localStorage
不可靠(在内存不足时清除)存在问题。 切换到 Firebase 版本4.13.0
,该版本现在使用indexedDB
来存储身份验证状态。这更可靠,在这种情况下应该持续存在。