如何设计一个帐户只能一个终端登陆?

如题:
我自己的逻辑:
1.在用户表中新增一个字段 is_online(是否已登陆 0 未登陆 1登陆)
2.登陆时判断此字段是否为1 ,退出时,更新此字段为0

如果用户非正常退出的情况 (关闭浏览器等) 这个情况就会没办法更新is_online字段

目前想到一个方法:但是没有完全理解

就是将session_id存入数据库 登陆时判断数据库中的session_id 在服务器中是否存在?

这个具体如何操作 请教一下

紫衣仙女
浏览 618回答 5
5回答

慕桂英546537

每次登陆后生成一个有时效token,保存在服务器端和客户端,每次鉴权时只验证这个token这样新的登录事件发生后,由于token改变,以前的有效登录就自动失效了

呼如林

登陆时,将session_id存入数据库 鉴权时判断 数据库中的session_id在服务器中是否还存在 通过session_save_path()获取session_id在服务器中的目录路径 //判断数据库中用户是否登陆 if($admin['is_online']) { //如果用户非正常退出时, 判断session_id是否存在 如果存在 提示已经登陆 ( session默认30分钟失效) if(file_exists(session_save_path().'\\'.$admin['session_id'])) { ajaxmsg('此账号已在其它地方登陆,请先退出后再登陆',0); } }

小唯快跑啊

我们网站是用的memcache共享session做到的
打开App,查看更多内容
随时随地看视频慕课网APP