在移动应用程序中保持用户会话活跃的最佳方法
Best approach to keep user session alive in Mobile apps
我们开发了一个移动应用程序(Android & iOS),它具有自定义登录和有限的会话到期时间(3 天)。会话将在 3 天后过期,我们正在显示登录页面以重新登录。
但我们不想向用户显示登录页面。最好的方法是什么。
方法一:
在服务器端,不要给生成的session设置过期时间。这样在用户注销之前该会话不会过期。
方法二:
在 UI 中,将用户名和密码保存在永久存储中,如 sqlite 等。当会话过期时(在我的例子中是 3 天后),UI 必须发送 hidden 登录调用以获取新的会话 ID。在这种情况下,我们不会重定向到登录页面。
其他移动应用程序如何在用户注销之前保持会话 ID 有效。
除了上述 2 种方法之外,请向我推荐任何其他最佳方法。
您可以使用以下方法解决您的问题,我遇到过同样的问题并使用了相同的方法:
服务器应该发送一个额外的 RefreshToken 和你的 sessionId。
或者服务器应该提供不同的 API 以使用该 refreshToken 刷新您的 sessionId。
假设您收到“无效令牌”错误,那么您需要按照以下步骤操作:
- 使用上次保存的 RefreshToken 调用 RefreshToken API。
- 服务器应刷新该会话 ID 并将到期时间重置为 3 天,并用新的会话 ID 回复您。
- 只有当您再次 logOut/login 并且 3 天到期时(意味着用户已经 3 天没有使用应用程序,因此他应该注销),服务器才应该在它们的末端创建新的 RefreshToken。
- 所以您应该仅在 RefreshToken 过期时注销。
- 您将获得新的 sessionID,然后将其用于进一步的请求以及出现该错误的请求。
我们开发了一个移动应用程序(Android & iOS),它具有自定义登录和有限的会话到期时间(3 天)。会话将在 3 天后过期,我们正在显示登录页面以重新登录。
但我们不想向用户显示登录页面。最好的方法是什么。
方法一:
在服务器端,不要给生成的session设置过期时间。这样在用户注销之前该会话不会过期。
方法二:
在 UI 中,将用户名和密码保存在永久存储中,如 sqlite 等。当会话过期时(在我的例子中是 3 天后),UI 必须发送 hidden 登录调用以获取新的会话 ID。在这种情况下,我们不会重定向到登录页面。
其他移动应用程序如何在用户注销之前保持会话 ID 有效。
除了上述 2 种方法之外,请向我推荐任何其他最佳方法。
您可以使用以下方法解决您的问题,我遇到过同样的问题并使用了相同的方法:
服务器应该发送一个额外的 RefreshToken 和你的 sessionId。 或者服务器应该提供不同的 API 以使用该 refreshToken 刷新您的 sessionId。
假设您收到“无效令牌”错误,那么您需要按照以下步骤操作:
- 使用上次保存的 RefreshToken 调用 RefreshToken API。
- 服务器应刷新该会话 ID 并将到期时间重置为 3 天,并用新的会话 ID 回复您。
- 只有当您再次 logOut/login 并且 3 天到期时(意味着用户已经 3 天没有使用应用程序,因此他应该注销),服务器才应该在它们的末端创建新的 RefreshToken。
- 所以您应该仅在 RefreshToken 过期时注销。
- 您将获得新的 sessionID,然后将其用于进一步的请求以及出现该错误的请求。