因此,redis键名中的错字是问题,因为写数据使用的
$redis->sadd('users:sessions:'.$userId,Session::getId());是键的前缀
'users:sessions:',而获取数据使用的
$redis->srem('user:sessions:' . $userId,$sessionId);是键的前缀,'user:sessions:'这就是为什么代码不起作用并
dd()返回空数组的原因。
所以正确的代码看起来像这样
public function postSignIn(Request $request){ if (Auth::attempt(['email' => $request['email'], 'password' =>$request['password'] ]) ) { $redis = Redis::connection();$userId=Session::getId(); $redis->sadd('user:sessions:'.$userId,Session::getId()); return redirect()->route('main'); } return redirect()->back();}public function getLogout(){ $redis = Redis::connection(); $userId=Session::getId(); $userSessions = $redis->smembers('user:sessions:' . $userId); $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');}


