Ich baue eine Laravel-Anwendung, wo ein Benutzer ein anderes Gerät anmeldete und während ich ausgeloggt bin, möchte ich ihn zwingen, von einem anderen Gerät abgemeldet zu werden. Wie implementiere ich in Laravel?PHP Laravel: Wie man sich von anderem Gerät mit derselben userId abmahnt
Persönlich habe ich Redis Server dafür verwendet. Aber ich weiß nicht, warum es nicht funktioniert. Während ich das Programm ausgeführt habe, habe ich redis-server.exe
auch ausgeführt. Und ich bin in Windows. Und hier ist mein Controller, wo ich die Anmeldung geschrieben habe, um den Benutzer von einem anderen Gerät abzumelden. Wenn jemand irgendeine Lösung findet, bitte hilf mir, es herauszufinden. Danke im Voraus.
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');
}
korrigiert mich wenn ich falsch liege, aber wenn der Redis Die Speicherklasse funktioniert wie folgt: $ redis-> sadd ($ key, $ value); ', Sie speichern nur eine Sitzungs-ID, und jeder Benutzer protokolliert, dass Sie die vorherige überschreiben. – TheFallen
Nein, weil ich dd() die o/p und andere Session ID habe ich habe. – User57
Haben Sie den Session-Treiber in 'config/session.php' nach Redis geändert oder verwenden Sie nur die Redis-Fassade für den Sitzungs-ID-Speicher? – TheFallen