我们开发了一款移动应用程序(Android 和 iOS),该应用程序具有自定义登录且 session 到期时间有限(3 天)。 session 将在 3 天后过期,我们将显示登录页面以重新登录。
但我们不想向用户显示登录页面。最好的方法是什么。
方法一:
在服务器端,不要为生成的 session 设置到期日期。因此在用户注销之前该 session 不会过期。
方法 2:
在 UI 中,将用户名和密码保存在 sqlite 等永久存储中。当 session 过期时(在我的例子中是 3 天后),UI 必须发送隐藏 登录调用以获取新 session ID。在这种情况下,我们不会重定向到登录页面。
其他移动应用程序如何在用户注销之前保持 session ID 有效。
请建议我除了上述两种方法之外的任何其他最佳方法。
最佳答案
您可以使用以下方法来解决您的问题,我遇到过同样的问题并使用了相同的方法:
服务器应该发送一个额外的 RefreshToken 和你的 sessionId。 或者服务器应提供不同的 API 以使用该 refreshToken 刷新您的 sessionId。
假设您收到“无效 token ”错误,那么您需要按照以下步骤操作:
- 使用上次保存的 RefreshToken 调用 RefreshToken API。
- 服务器应刷新该 sessionID 并将 expiryTime 重置为 3 天,并使用新的 SessionID 回复您。
- 服务器应仅在您注销/再次登录时以及 3 天到期时在其端创建新的 RefreshToken(意味着用户 3 天未使用应用程序,因此他应该注销)。
- 因此您应该仅在 RefreshToken 过期时注销。
- 您将获得新的 sessionID,然后将其用于进一步的请求以及出现该错误的请求。
关于android - 在移动应用程序中保持用户 session 活跃的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257352/