Bir kullanıcı bir pertiküler cihazdan çıkış yaptığında, şimdiye kadar kaydettiği tüm cihazlardan çıkış yapmak istiyorum. Laravel'de nasıl yaparım.Laravel 5.2 - Bir kullanıcının tüm cihazlarından nasıl çıkış yapılacağı
ben "PREDIS/PREDIS" yükleyerek Oturum userId tutmak için REDIS kullandık: "~ 1.0"
Ve İşte signin ve Logout benim denetleyicisi geçerli:
public function postSignIn(Request $request)
{
if (Auth::attempt(['email' => $request['email'], 'password' =>$request['password'] ])) {
$redis = \Redis::connection();
$userId=Session::getId();
$redis->sadd('users: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');
}
başarıyla nereden çıkabilir giriş yapmış ve aynı zamanda çıkış yapmış, ancak diğer cihazlarda tüm oturumu öldürmez.
Sorunu nasıl çözebilirim?
benziyor; ('Kullanıcı: oturumlarını' $ userId, $ sessionId.) $ redis-> del ('laravel:'. $ sessionId); –
Redis Connection'ım ile aynı bir sorun var. Bu satırları değiştirdikten sonra hata alıyorum. – Hola
hm '$ userId = Auth :: user() -> id; 'yerine kullanmanız gerektiğini düşünüyorum;' $ userId = Session :: getId(); 'ikincisi size oturum kimliği verir, ancak kullanıcı değil bununla birlikte, her defasında tek bir oturum numarası kaydedebilirsiniz – dyachenko