【问题标题】:Laravel: Logout/clear all sessions for all users from appLaravel:从应用程序中注销/清除所有用户的所有会话
【发布时间】:2016-08-07 09:53:28
【问题描述】:

问题

我想为我的 Laravel 应用程序中的所有用户清除所有会话。

我尝试过的

我了解Auth::logout() 将注销单个用户,而不是所有用户。我还尝试从storage/framework/sessions 中删除会话文件。两者都没有工作。

我正在使用内置的 Authentication(例如 Auth)和运行 Laravel 5.2 的会话的文件驱动程序。

如何有效地强制所有登录用户注销,以便他们必须重新登录?

【问题讨论】:

  • 删除会话文件应该是一个很好的解决方案:如果会话的文件被删除,我无法弄清楚用户会话云如何保持活动状态..
  • 我自己测试过,清除会话文件夹中的所有文件会使所有用户退出我的应用程序。也许还有其他东西让他们保持登录状态?
  • @MattMcDonald,一定有什么东西让他们活着,因为当我这样做时,他们仍然以某种方式通过了Auth::check()...
  • 你有没有找到任何解决方案?
  • 我没有。我想我最终重命名了会话 cookie 或其他东西以使其无效。

标签: php laravel session


【解决方案1】:

在 app/session.php 中你可以改变 cookie 的值,所以用户会因为 cookie 和配置不匹配而自动退出

【讨论】:

  • 我在将会话更改为多个域时遇到了类似的问题。碰巧新旧cookie由于名称相同但域不同而发生冲突。我不确定这是否是原因,但结果是用户无法登录。在登录页面上,显然是成功的,但他再次被重定向到该页面,而不是遵循流程。解决方案是更改 cookie 的名称,通过旧 cookie 的名称添加检查,如果存在,则忘记它。
【解决方案2】:

值得注意的是,Laravel 实际上只将活动会话存储在会话文件夹中;那些被“记住”但没有主动访问您的应用程序的会话不计入这些会话中。因此,仅删除文件不会完成工作。

您还必须清除用户表中的所有记住令牌,因为此令牌与存储在 cookie 中的本地令牌一起使用,以在用户重新连接时重新创建会话。

【讨论】:

  • “记住令牌”正是问题所在。如果您是记住用户,则删除会话文件和清除用户表中的remember_token 列的组合将使所有以前的会话无效。
  • 同意;对于任何其他驱动程序,您将要清除任何相关的存储区域,但我试图回答指定“文件”驱动程序的问题。
猜你喜欢
  • 2017-02-10
  • 2019-07-09
  • 2016-02-17
  • 2016-11-04
  • 2013-06-06
  • 2017-05-02
  • 2020-05-10
  • 1970-01-01
相关资源
最近更新 更多