Laravel 5.7 Session 数据清空失效,SessionID 始终是同一个 ID

环境:
(谷歌浏览器版本 69.0.3497.100(正式版本) (64 位))
Laravel5.7、PHP7.2.10、MySQL5.7.23、Apache2.4.35(wampserver3.1.4_x64(PHP环境一键安装包))

这是我没有连接数据库时,.env文件里SESSION_DRIVER=file

遇到的问题1:
我的执行步骤:
1:首次访问session1路由请求存储数据,然后访问session3路由读取所有数据,可以正常读取到数据。
2:其次访问session2路由请求删除数据并且 dd(Session::all()); 查看数据,在session2请求页面中查看数据被清空
3:最后访问session3路由请求读取所有数据,始终还是存在session1路由请求存储的数据!
尝试过加return,清空浏览器缓存,cookie都未成功解决。

这是我连接数据库时,.env文件里SESSION_DRIVER=database
遇到的问题2:
我的执行步骤:
1:php artisan session:table --生成一个用于 session 的数据迁移文件
2:composer dump-autoload --自动加载一个文件后必须使用才可生效
3:php artisan migrate --创建迁移数据库表
4:SELECT FROM sessions; --查看数据
5:访问session3路由请求读取所有数据,这时sessions表中的数据应该发生改变!
6:SELECT
FROM sessions; --查看数据,字段:id、last_activity始终还是原来相同的数据。

代码:
Route::any('session1', function () {
//Session::put('username', '拉拉');
Session::push('username','bobo');//数组方式存储
Session::push('username','ququ');
//Session::pull('username', 'lala');//只使用一次,取出后便自动删除
Session::save();//保存元素
});

Route::any('session2', function () {
//Session::forget('username');//删除指定元素
Session::flush();//删除所有元素
dd(Session::all());
});

Route::any('session3', function () {
dd(Session::all());
});

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
yema
最佳答案

移除结束在保存一次
file

5年前 评论
讨论数量: 2
yema

移除结束在保存一次
file

5年前 评论

session使用注意点
工作中使用的是session默认的文件缓存,在使用过发现 session()->put("key","values") 没有设置成功,最后翻源码发现是使用文件缓存时候需要使用save() 方法才能持久化到数据库中
源码:vendor/laravel/framework/src/Illuminate/Session/Store.php
由于使用文件缓存 因此write方法调用的源码:vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!