相关疑难解决方法(0)

Laravel 5.2 - 如何从他的所有设备注销用户

当用户从特定设备注销时,我想从他登录的所有设备注销到现在为止.我是怎么在Laravel做的.

我使用Redis通过安装"predis/predis"来保持userId在Session中:"~1.0"

这是我的SignIn和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');
}
Run Code Online (Sandbox Code Playgroud)

它已成功登录并注销但不会终止其他设备中的所有会话.

我该如何解决这个问题?

php session redis laravel laravel-5.2

7
推荐指数
1
解决办法
3043
查看次数

标签 统计

laravel ×1

laravel-5.2 ×1

php ×1

redis ×1

session ×1