2016-12-06 18 views
2

管理者として、特定のユーザをアプリケーションからログアウトします。ログアウトする特定ユーザadmin by Laravel 5.2

アプリケーションからユーザーログアウトするために、次のコードを試しました。

Auth::logout(); 

しかし、特定のユーザーをログアウトする代わりに、管理者はログアウトします。 サーバーからセッションIDを取得していますが、特定のユーザーがログアウトするように特定のユーザーセッションをクリアするには、そのセッションIDをどのように渡すことができますか混乱します。

+0

通常、これはできませんが、ユーザーのセッションの保存方法によって異なります。サーバーのセッション記憶域から削除することにより、ユーザーのセッションを無効にすることができます。あなたがログアウトしたいユーザーにどのセッションが属しているかを特定するのに時間がかかるかもしれません。 – josephting

答えて

0

すべてのAuth:logoutはセッションCookieを削除するため、これを行うことはできません。

もちろん、他のユーザーのCookieにアクセスすることはできません。

セッションドライバによっては、セッションサーバー側を無効にすることができます。例えば

ドライバがデータベースであれば、セッションIDを削除するには、DBクエリのような単純なことができます(ただしさて​​、あなたは正しいユーザーIDを見つけるために、すべてのセッションのペイロードを解析する必要があります)

一番簡単な方法は、session_tokenフィールドをuserテーブルに追加することです。ログイン時に、ランダムな値を生成し、セッションとデータベースの両方に格納します。次に、ミドルウェアで、DBのsession_tokenがセッション内のsession_tokenと一致するかどうかを確認します。

ユーザーをログアウトするには、単にデータベース内のトークンをリセットしてください。

1

このような場合があります。 私は

$userToLogout = User::find(1); // Any userId you want to logout 
Auth::setUser($userToLogout); 
Auth::logout(); 
0

あなたはユーザーテーブルに新しい列を作成することができます知っているインスタンスのforce_logoutと呼ばれます。次に、(認証ミドルウェアの)要求ごとに、force_logoutにチェックを入れます。その後、ユーザAuth::logout(); IF force_logout1でログアウトすることができます。

ユーザーをログアウトする場合は、ユーザーのforce_logout1にするだけです。