【问题标题】:Logout specific user by admin Laravel 5.2通过管理员 Laravel 5.2 注销特定用户
【发布时间】:2016-12-06 08:07:29
【问题描述】:

作为管理员,我想从应用程序中注销特定用户。

我尝试了以下代码让用户从应用程序中注销。

Auth::logout();

但不是注销该特定用户,而是让管理员注销。 我正在从服务器获取会话 ID,现在我很困惑如何传递该会话 ID 以清除该特定用户会话,以便特定用户注销。

【问题讨论】:

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

标签: php laravel-5.2


【解决方案1】:

也许这样的事情可以帮助你。 告诉我

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

【讨论】:

    【解决方案2】:

    例如,您可以在用户表中创建一个名为 force_logout 的新列。然后在每个请求(在您的身份验证中间件中),检查这个force_logout。然后您可以使用Auth::logout(); 注销用户,如果force_logout1

    因此,如果您想注销任何用户,只需将用户 force_logout 设为 1

    【讨论】:

      【解决方案3】:

      您不能这样做,因为 Auth:logout 所做的只是删除会话 cookie。

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

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

      例如,如果驱动程序是数据库,则可以像数据库查询一样简单地删除会话 ID(但是,您必须解析所有会话有效负载才能找到正确的用户 ID)

      一种更简单的方法是将 session_token 字段添加到您的用户表中。登录时,您生成一个随机值并将其存储在会话和数据库中。然后在中间件中,检查数据库的 session_token 是否与会话中的匹配。

      要注销用户,只需在数据库中重置令牌即可!

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 2017-11-05
        • 1970-01-01
        • 2014-08-08
        • 2016-08-22
        • 2017-05-17
        • 2016-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多