我的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 -而不是数据-它将保留)