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

时间:2014-05-27 13:16:36

标签: php session laravel

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

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

  • 以user1身份登录,设置一些UI选项,注销
  • 以user2身份登录,希望看到默认的UI选项,实际上会看到user1的选项

我尝试过使用本机和数据库会话驱动程序。

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

2 个答案:

答案 0 :(得分:4)

  

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

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

  

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

更多的是最终用户的安全措施不良。

  

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

用户退出时清除会话数据。

答案 1 :(得分:2)

  

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

你误解了“会话”和“身份验证”。它们不是同一件事。 您可以在没有登录Laravel(或大多数Web应用程序)的情况下进行“会话”。

登录应用程序时,只需将其添加到当前会话中即可。但是当您注销应用程序时,当前会话将继续,而不是auth位。

  

什么是正确的解决方案?

如果要清除所有数据的会话 - 您必须清除它:

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

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