2016-12-06 101 views
2

作为管理员我想从应用程序注销特定用户。注销特定用户由管理员Laravel 5.2

我试过下面的代码让用户从应用程序注销。

Auth::logout(); 

但不是注销该特定用户,它使管理员注销。 我从服务器获取会话ID,现在我很困惑如何通过该会话ID来清除特定用户会话,以便特定用户注销。

+0

你通常不能这样做,但这取决于你如何保存用户的会话。您可以通过从服务器的会话存储中删除来使用户的会话无效。可能需要一段时间才能确定哪个会话属于您想要注销的用户。 – josephting

回答

0

你不能这么做,因为所有的Auth:logout都是删除会话cookie。

当然,您不能访问其他用户的cookies。

根据您的会话驱动程序,您可能会使会话服务器端无效。

例如,如果驾驶员数据库,它可以作为一个DB查询删除会话ID一样简单(但远,你必须分析所有会话的有效载荷,以找到正确的用户ID)

一种更简单的方法是将session_token字段添加到用户表中。在登录时,您会生成一个随机值并将其存储在会话和数据库中。然后在中间件中,检查数据库的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();注销用户,如果force_logout1

所以如果你想记录任何用户,你只需要的用户1