2016-04-03 24 views
1

の別のユーザ(admin)によってユーザをログアウトさせると、現在3人のユーザが3つのデバイスからログに記録されています。ユーザー(管理者)の1人が強制的にuser2をログアウトしたい、どうすればlaravel 5.2で達成できますか?laravel 5.2

データベースのテーブル構造:: users -> id|name|email|password|remember_token

更新 シナリオ::

user1 --> logged from device 1 [user1 is admin type and has all kind of permission] 
user2 --> logged from device 2 [normal user] 
user3 --> logged from device 3 [normal user] 

現在、すべてのユーザーがsimultaniously記録されます。 user1はuser2にいくつかの変更を加え、user2に再ログインしたいのですが、user2にログアウトする以外はuser2に再ログインしてください。 user1はどのようにしてuser2(リモートユーザ)のログアウトを作成できますか?

考えるソリューション分析:

$userIdToLogout = 2; // it is user2 

if (!is_null(Auth::user()) { 
    if (Auth::user()->id == $userIdToLogout) { 
     Auth::logout(); 
    } 
} 

- Auth::user() will return user1 information NOT user2 
- So if (Auth::user()->id == $userIdToLogout) condition will never be true 

は私の分析が間違っています?

+0

を参照してください[ Laravel - 特定のログアウトuser by user id](https://stackoverflow.com/a/41440830/65732)を参照してください。 – sepehr

答えて

0

ユーザをログアウトするには、Auth::logout()を使用する必要があります。これにより、ユーザーのセッションから認証情報がクリアされます。だから、ユーザーのIDを確認して、これがあなたが望むユーザーならばAuth::logout()を実行してください。

https://laravel.com/docs/5.1/authentication#authenticating-users

更新

あなたは簡単な構造を使用して適切なユーザーに確認することができ

$userIdToLogout = 2; 

if (!is_null(Auth::user()) { 
    if (Auth::user()->id == $userIdToLogout) { 
     Auth::logout(); 
    } 
} 
@Bogdanからユーザチェックのため

代替ソリューション:

if (Auth::id() == $userId) { 
    Auth::logout(); 
} 
+1

デフォルトの認証システムドライバはセッションを使用しているため、他のユーザのセッションから認証ペイロードを削除する必要があります。 'Auth :: logout()'は現在認証されているユーザであり、2人目(リモート)ユーザでは動作しません。 – Bogdan

+0

あなたは私の答えを定期的にdownvote、しばしば理由がない唯一の男だが、真剣に、あなたは私が書いたものを読んだことがありますか?私は繰り返します:IDのチェックを行い、 'Auth :: logout()'を実行すると、セッションからユーザーの認証情報が消去されます。だから、ユーザーがウェブサイトに来ると、彼は即座にログアウトされます。私はこのことの説明へのリンクを与えた。 –

+1

あなたが特にあなたをターゲットにしているとは申し訳ありませんが、真実は私が質問に有効な答えを提示していない投票回答です(あなたの回答は、その基準に一致する回答だけではありません。嫌がらせをする)。また、他のユーザーとは違って、私はコメントを書くという礼儀を持っているので、ポスターは何が問題なのか不思議ではなく、なぜ投票が下がったのか分かっています。また、 'user1'が' Auth :: logout() 'を実行すると、' user1'が 'user2'ではなくログアウトするので、' user1'がログアウトする 'user2'を実行する方法については、 – Bogdan