加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何处理不同设备上的会话?

发布时间:2020-12-13 16:46:57 所属栏目:PHP教程 来源:网络整理
导读:我正处于构建php / mysql后端的初始阶段,该后端向网站和 iphone / android / etc设备公开REST接口. 我不太确定处理使用同一帐户的多个设备的会话的“标准”或“最佳做法”是什么. 以下是我目前关于这将如何工作的想法: 我现在会用MySQL来存储会话,会话表如
我正处于构建php / mysql后端的初始阶段,该后端向网站和 iphone / android / etc设备公开REST接口.

我不太确定处理使用同一帐户的多个设备的会话的“标准”或“最佳做法”是什么.

以下是我目前关于这将如何工作的想法:

>我现在会用MySQL来存储会话,会话表如下:

id,session_id (hash),user_id (int),created (timestamp),expire (timestamp),device (enum)

>当用户通过iOS应用程序或Android应用程序登录时,我会在成功json中返回会话令牌,以便将来使用api.与进行api通话的网站相同.
>出于安全考虑,如果用户重新登录,我应该重新生成并覆盖会话令牌,但仅限于该设备的session_id.
>我还有一个过期列,告诉我会话到期,如果我愿意,我可以创建一个可以在两周后过期的会话,并定期由CRON作业清除.

这对我来说似乎是一种合理的方法,但如果用户使用iphone和ipad,或者使用同一帐户的多个Android设备,则会出现问题.任何时候用户登录一个将导致另一个注销.

我注意到即使我从另一台iPhone登录,instagram也没有使会话无效.

但是,我不认为我可以复制该行为,除非用户重新登录时不会覆盖会话令牌,或者每当用户从iphone登录时继续将会话行添加到会话表中?

跨不同设备处理会话的标准方法是什么?

解决方法

我强烈反对你使用mysql存储会话.我建议使用redis或memcache.如果服务器崩溃,Redis会将数据存储到磁盘. Redis还允许您设置TTL以使会话到期,这将解决#4.

如果您正在使用基于休息的呼叫,我建议您将该会话作为cookie添加到标头中并来??回传递.基本上模仿浏览器访问该页面的方式.我认为这也会使测试变得更容易.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读