簡體   English   中英

PHP Laravel:如何從具有相同userId的其他設備強制注銷

[英]PHP Laravel : How to logout from other device with same userId forcefully

我正在構建一個laravel應用程序,其中A用戶登錄了其他設備,而注銷時,我想強制他也從其他設備注銷。 我如何在laravel中實施。

就我個人而言,我曾使用Redis Server。但是我不知道為什么它不起作用。 在運行程序的同時,我也運行了redis-server.exe並且我在Windows中。 這是我的控制器,我在其中編寫了用於強制用戶從其他設備注銷的登錄名。 如果有人找到任何解決方案,請幫助我找出解決方案。謝謝。

控制器:

  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');
}

循環每個用戶會話時,請按其ID加載它並清除其中的所有數據:

    foreach ($userSessions as $sessionId) {
        if ($currentSession == $sessionId) {
            continue;
        }
        $redis->srem('user:sessions:' . $userId, $sessionId);
        $redis->del('laravel:' . $sessionId);
        \Session::setId( $sessionId ); //ADD THIS
        \Session::clear(); //ADD THIS
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM