Php Can';不要忘记Laravel5.2中ajax请求的会话

Php Can';不要忘记Laravel5.2中ajax请求的会话,php,ajax,laravel,session,laravel-5,Php,Ajax,Laravel,Session,Laravel 5,我正在运行一个jqueryajax帖子到我的控制器,在那里我检查会话是否存在。如果是这种情况,我读取值,忘记会话并将一些数据返回到视图 如果在使用“忘记”后在控制器函数中使用session()->has,则会将其删除。但是当我重新加载页面并再次执行ajax请求时,会话仍然存在 在我的控制器里,我试着用“忘记”和“拉动”两种方法将其移除 $request->session()->forget('last_history_id'); $request->session()->

我正在运行一个jqueryajax帖子到我的控制器,在那里我检查会话是否存在。如果是这种情况,我读取值,忘记会话并将一些数据返回到视图

如果在使用“忘记”后在控制器函数中使用session()->has,则会将其删除。但是当我重新加载页面并再次执行ajax请求时,会话仍然存在

在我的控制器里,我试着用“忘记”和“拉动”两种方法将其移除

$request->session()->forget('last_history_id');
$request->session()->pull('last_history_id')

所以我的问题是,为什么我不能忘记ajax请求中的会话,以便在下一个页面重新加载时它就消失了

我建议在
config/session.php
文件中将
文件
驱动程序更改为
数据库
驱动程序(或除文件以外的任何驱动程序)

在使用
文件
和异步调用时,会出现一些错误。我遇到了您遇到的问题,在切换到
数据库后,问题得到了解决

您可以相当轻松地切换到
数据库。下面是有关更多帮助以及相关代码的详细信息

您需要设置一个表来包含会话项。您可以使用
php artisan session:table
生成迁移。然后只需
composer dump autoload
,然后是
php artisan migrate
。这将在数据库中为您创建表


最后,告诉拉威尔你更喜欢这个司机。根据您设置环境的方式,这可能是在
config/session.php
中硬编码的,也可能是从
.env
文件中提取的。

此问题可能与我的问题有关:

我最近遇到了一个问题,在使用AJAX请求时,
session\u id
发生了变化。可能当你检查会话时,它实际上是一个新的会话。因此,当您忘记它时,它对浏览器的主会话没有影响


问题可能是
web
中间件在路由上的双重绑定。我没有注意到web已经应用于
RouteServiceProvider
。删除我的问题路径上的
'middleware'=>'web'
后,此问题完全消失。

您在哪里设置此会话值?可能重新加载页面会导致再次设置会话变量。这里不是这种情况,我在发布表单时设置了会话,然后将用户重定向到我发布ajax的列表。我怀疑您正在使用
文件
驱动程序进行会话,对吗?是的,没错,知道文件驱动程序有问题吗?谢谢,它似乎是文件驱动程序和laravel homestead的组合,当部署到我的测试服务器时,这个问题就消失了。将尝试更新homestead框,看看它是否消失,然后再更改为数据库驱动程序。@tobros91是的,这是我从GitHub的那篇长文章中收集到的。对我来说,这个问题在切换到数据库驱动程序后就解决了,但我不是在Homestead工作,所以也许更新一下会对你的情况有所帮助。我在这里追了半天:)@tobros91这方面有什么更新吗?更新或切换到其他驱动程序解决了问题吗?更新homestead并没有解决我的问题。在运行多个异步ajax请求时,laravel似乎无法删除会话。我将async设置为false,并确保在另一个请求完成时始终运行此特定请求。