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());
});

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
yema
最佳答案

移除结束在保存一次
file

4个月前
讨论数量: 2
yema

移除结束在保存一次
file

4个月前

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

4个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!