如何防止Android客户端同时登录?就是一个用户只能在一个手机上,不能多手机同时在线
PHP中文网
PHP中文网 2017-04-17 11:39:01
[Android讨论组]

用户登录成功以后,假设用户一个小时以后重新登录,只带着sessionId访问即可。用户退出登录时,需要将数据库表中的sessionId清空。在登录的时候,将要判断SessionId是否为空。貌似还要判断一下是否更换了手机。

但是用户如果是非正常退出(比如手机关机,卸载软件,断网等)此时数据库的表sessionId没有清空。
那该如何办呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
巴扎黑

下次登录的时候检查一下,如果是另一个手机就把之前的session标记为无效;如果有session但是已经失效就清除此session并要求用户重新登录。
session本身在服务器段可以设定一个expiration,定期清除太长时间没有活跃的session可以节省一些服务器资源,但是这个expiration不能太短,否则经常提示用户登录会严重影响用户体验,具体时间要取决于用户平均活跃间隔,一般把这个时间乘上几倍就差不多了。

高洛峰

一般来说移动端不会让用户经常的去登录,所以用户非正常退出的时候你本来就不应该去清楚sessionId,你可以试试看你重启之后手机qq、微信会不会让你重新登录。所以你的问题根本不存在。
一个小时之后用户打开你的应用不应该要重新登录了,而是可以拿着某个token/sessionId去直接获取服务了。每次重新登录的时候重新生成新的token/sessionId自然就保证单点登录了。
当然你要防止用户的token被拿到多台设备上通过hack的方式使用,解决方案应该有很多的。

怪我咯

这个是典型的单点登录问题,需要做的是在登录时给每用户生成一个唯一token,客户端请求数据时需携带token标识当前用户,当此帐号在其他设备登录时重新生成token。原来的token就失效了,这样他在原来的设备请求数据时因为token失效让它重新登录。这样就实现了单点登录。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号