Laravel 5.2 – Как выйти из системы пользователя со всех его устройств ⇐ Php
-
Anonymous
Laravel 5.2 – Как выйти из системы пользователя со всех его устройств
When a user logged out from a perticular device I want to logout from all the device he has logged in till now . How I do it in Laravel.
I have used Redis for keeping the userId in Session by installing "predis/predis": "~1.0"
And Here is my controller for SignIn and Logout:
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'); } It's successfully get logged in and also logged out but it doesn't kill all the session in other devices.
How do I solve the problem?
Источник: https://stackoverflow.com/questions/374 ... is-devices
When a user logged out from a perticular device I want to logout from all the device he has logged in till now . How I do it in Laravel.
I have used Redis for keeping the userId in Session by installing "predis/predis": "~1.0"
And Here is my controller for SignIn and Logout:
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'); } It's successfully get logged in and also logged out but it doesn't kill all the session in other devices.
How do I solve the problem?
Источник: https://stackoverflow.com/questions/374 ... is-devices
Мобильная версия