我正处于构建 php/mysql 后端的初始阶段,该后端将 REST 接口暴露给网站和 iphone/android/etc 设备。
我不太确定处理使用同一帐户的多个设备的会话的“标准”或“最佳实践”是什么。
以下是我目前对这将如何工作的想法:
我现在会使用 MySQL 来存储会话,会话表如下:
id, session_id (hash), user_id (int), created (timestamp), expire (timestamp), device (enum)
当用户通过 iOS 应用程序或 android 应用程序登录时,我会在成功 json 中返回一个会话令牌,以供将来使用的 api 调用使用。与进行 api 调用的网站相同。
出于安全目的,如果用户重新登录,我应该重新生成并覆盖会话令牌,但仅限于该设备的 session_id。
我还有一个 expire 列,它告诉我会话的到期时间,这样如果我愿意,我可以创建一个可以在两周内到期并由 CRON 作业定期清理的会话。
这对我来说似乎是一种合理的方法,但如果用户使用 iphone 和 ipad,或者使用同一个帐户的多个 android 设备,就会出现问题。任何时候用户使用其中一个登录都会导致另一个注销。
我注意到即使我从另一部 iPhone 登录,instagram 也不会使会话无效。
但是,我认为我不能复制这种行为,除非我在用户重新登录时从不覆盖会话令牌,或者每当用户从 iphone 登录时继续将会话行添加到我的会话表中?
跨不同设备处理会话的标准方法是什么?