My Laravel PHP应用程序使用Session::put()
存储各种用户界面状态。
我很惊讶地发现在一台PC上顺序登录的不同用户之间似乎保留了会话变量。例如:
我尝试过使用本机和数据库会话驱动程序。
为什么会话变量保留在同一台PC上的不同用户之间?这不会被视为安全缺陷吗?这是一个Laravel或一般PHP问题,还是我的实现?什么是正确的解决方案?
答案 0 :(得分:4)
为什么在同一台PC上的不同用户之间保留会话变量?
大概是因为他们正在退出您的应用程序,而不是操作系统的用户环境,也没有关闭浏览器。
这不会被视为安全缺陷吗?
更多的是最终用户的安全措施不良。
这是一个Laravel或一般PHP问题,还是我的实现?什么是正确的解决方案?
用户退出时清除会话数据。
答案 1 :(得分:2)
为什么会话变量在不同用户之间保留 PC?
你误解了“会话”和“身份验证”。它们不是同一件事。 您可以在没有登录Laravel(或大多数Web应用程序)的情况下进行“会话”。
登录应用程序时,只需将其添加到当前会话中即可。但是当您注销应用程序时,当前会话将继续,而不是auth
位。
什么是正确的解决方案?
如果要清除所有数据的会话 - 您必须清除它:
Auth::logout();
Session::flush();
(注意 - 上面使用Session::regenerate()
的评论建议不正确 - 只会重新生成会话ID - 而不是数据 - 它会保留)