为什么在同一台PC上的不同用户之间保留会话变量?


Why are session variables retained between different users on the same PC?

我的Laravel PHP应用程序使用Session::put()存储各种用户界面状态。

我很惊讶地发现,会话变量似乎在同一台PC上依次登录的不同用户之间保留。例如:

  • 以user1登录,设置一些UI选项,退出
  • 以user2登录,期望看到默认的UI选项,实际看到user1的选项

我已经尝试了本地和数据库会话驱动程序。

为什么会话变量在同一台PC上的不同用户之间保留?这难道不会被视为安全缺陷吗?这是一个Laravel或一般的PHP问题,还是我的实现?正确的解决方案是什么?

为什么会话变量在同一台PC上的不同用户之间保留?

可能是因为他们正在注销您的应用程序,而不是操作系统的用户环境,也没有关闭浏览器。

这难道不会被视为安全缺陷吗?

这更多的是终端用户不良安全实践的案例。

这是一个Laravel或一般的PHP问题,还是我的实现?正确的解决方案是什么?

清除用户注销时的会话数据

为什么会话变量在相同的不同用户之间保留电脑吗?

你把"sessions"answers"auth"弄错了。它们不是一回事。你可以在不登录到Laravel(或大多数web应用程序)的情况下进行"会话"。

当您登录到一个应用程序时,它被简单地添加到您的当前会话。但是当您注销应用程序时,您的当前会话继续,只是没有auth位。

正确的解决方案是什么?

如果你想清除会话中的所有数据-你必须刷新它:

Auth::logout();
Session::flush();

(注意-上面使用Session::regenerate()的评论建议是不正确的-这只会重新生成会话ID -而不是数据-它将保留)