gpt4 book ai didi

PHP Laravel : How to logout from other device with same userId forcefully

转载 作者:IT王子 更新时间:2023-10-29 06:07:36 26 4
gpt4 key购买 nike

我正在构建一个 laravel 应用程序,其中用户登录其他设备并在注销时我想强制他也从其他设备注销。我如何在 laravel 中实现。

我个人用过Redis Server,但不知道为什么不行。在运行程序时,我还运行了 redis-server.exe。而且我在 Windows 中。这是我的 Controller ,我在其中编写了用于强制用户从其他设备注销的登录名。如果有人找到任何解决方案,请帮助我找到它。提前致谢。

Controller :

  public function postSignIn(Request $request)
{

if (Auth::attempt(['email' => $request['email'], 'password' =>$request['password'] ]) ) {
$redis = \Redis::connection();
$userId = Auth::user()->id;
$redis->sadd('users:sessions:' . $userId,Session::getId());
return redirect()->route('main');
}
return redirect()->back();
}



public function getLogout()
{
$redis = Redis::connection();
$userId =Auth::user()->id;
$userSessions = $redis->smembers('user:sessions:' . $userId);
$redis->sadd('users:sessions:'.$userId,Session::getId());
$currentSession = Session::getId();
foreach ($userSessions as $sessionId) {
if ($currentSession == $sessionId) {
continue;
}
$redis->srem('user:sessions:' . $userId, $sessionId);
$redis->del('laravel:' . $sessionId);
}
Auth::logout();
return redirect()->route('main');
}

最佳答案

当你循环每个用户 session 时,通过它的 ID 加载它并清除其中的所有数据:

    foreach ($userSessions as $sessionId) {
if ($currentSession == $sessionId) {
continue;
}
$redis->srem('user:sessions:' . $userId, $sessionId);
$redis->del('laravel:' . $sessionId);
\Session::setId( $sessionId ); //ADD THIS
\Session::clear(); //ADD THIS
}

关于PHP Laravel : How to logout from other device with same userId forcefully,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37428371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com