私は他のデバイスにログインしていて、ログアウトしている間に他のデバイスからもログアウトするようにするラーバルアプリケーションを構築しています。どのようにlaravelで実装するのですか?Laravel 5 - Redisを使用して彼のすべてのデバイスからユーザーをログアウトする方法
個人的に私はRedis Serverを使用しました。私が実行しているプログラムを実行している間redis-server.exe
also.And私はWindowsにいる。 は、私はまた
"predis/predis": "~1.0"
をインストールし、ここで私は、他のデバイスからログアウトからユーザーを強制するためにログインを書いた私のコントローラでいるすでにlaravelでインストールRedisのほかCACHE_DRIVER=redis SESSION_DRIVER=redis
でも.envファイルを変更しました。サインインもコントローラーで
は私がddは()私は、そのユーザー用に作成されたセッションを参照してください$redis
が、私は、ログインとログアウトしようとするとき、私は(DD)$userSessions
をしかし、とき、それはへのセッションテーブルに格納されている何を意味するので、空に見たときに比較する。
誰かが解決策を見つけた場合は、見つけてください。前もって感謝します。
コントローラー:あなたはこのようSTHを使用することができますLaravelでのRedisを使う
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);
\Session::setId($sessionId);
\Session::clear();
}
Auth::logout();
return redirect()->route('main');
}
ログアウトコントローラでログイン中に作成されたセッションはどのように削除されますか? 私はあなたのコードに置き換えて、実際には何も変更されません。 – User57
私は完全なコードに私の答えを更新しました。 – Pyton
私はあなたのコードで変更しましたが、何も実際に助けてくれてありがとう! – User57