手机刚登录进去,电脑那边刷新一下就变成未登录,回头再登手机又把电脑挤掉,两边来回抢,很影响使用。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
$key = 'session_' . md5($device_id); update_user_meta($uid, $key, $token); // 校验 $saved = get_user_meta($uid, $key, true);
会话令牌只保存一份,每次登录都覆盖旧值,新登录直接把上一台设备的凭证清掉,旧设备再请求就被判未登录,谁都留不住之前的会话。这一点先确认清楚,后面就不用反复试。
「WordPress 多设备挤下线」这类改动最怕改一半,回滚脚本先准备好,再动生产。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,把会话令牌改成按设备各存一条独立记录,不要共用同一个键;校验的时候只失效同设备的旧令牌,其他设备保留;登录后在页面提示该账号已在另一台设备登录。
改完照着核一遍,两台设备同时保持在线,各自刷新都不掉线,新设备登录不影响旧设备。
