重新登录或注册后清除掉原有用户的user-token保证只有一个用户能够登录

This commit is contained in:
2026-03-05 12:25:59 +08:00
parent 74612f136e
commit 8d8cee696f
3 changed files with 62 additions and 1 deletions

View File

@@ -56,6 +56,8 @@ class UserLogic
UserCache::setUser((int) $user->id, $userArr);
$userToken = $this->generateUserToken((int) $user->id);
// 同一用户只保留最新一次登录的 token旧 token 自动失效
UserCache::setCurrentUserToken((int) $user->id, $userToken);
return [
'user' => $userArr,
'user-token' => $userToken,
@@ -94,6 +96,8 @@ class UserLogic
UserCache::setUser((int) $user->id, $userArr);
$userToken = $this->generateUserToken((int) $user->id);
// 同一用户只保留最新一次登录的 token旧 token 自动失效
UserCache::setCurrentUserToken((int) $user->id, $userToken);
return [
'user' => $userArr,
'user-token' => $userToken,
@@ -174,7 +178,15 @@ class UserLogic
return null;
}
$id = $extend['id'] ?? null;
return $id !== null ? (int) $id : null;
if ($id === null) {
return null;
}
$userId = (int) $id;
// 同一用户只允许当前登记的 token 生效,重新登录/注册后旧 token 失效
if (!UserCache::isCurrentUserToken($userId, $userToken)) {
return null;
}
return $userId;
} catch (\Throwable $e) {
return null;
}