首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel会话随机过期

Laravel会话随机过期
EN

Stack Overflow用户
提问于 2015-01-14 16:37:28
回答 3查看 10K关注 0票数 11

我们的网站上有这个问题,我们从用户那里随机得到了CSRF错误。会话cookie和会话数据设置为在12小时后过期,会话驱动程序设置为使用Redis。根据我们的调查,我们最终成功地模拟了异常情况,所以这是一个场景:

用户使用Chrome浏览器打开了网站上的两个不同的页面,并设置了“打开上次关闭的标签”。其中一个页面上有一个表单(例如登录),然后用户在某个时候退出浏览器。他第二天重新打开浏览器(12小时过去了,会话cookie和会话数据都过期了) Chrome尝试重新加载所有打开的页面。它同时向服务器发送两个请求,而这些请求都没有会话cookie。在服务器端,Laravel为每个服务器生成两个不同的会话ID。Chrome接收它们并覆盖另一个会话cookie上的一个。一旦用户尝试提交表单(例如登录),它会生成CSRF错误,因为表单会话cookie被覆盖。

我们也有一些AJAX post请求,由于这种情况,我们得到了失败的CSRF错误。

我想知道Laravel是否可以以安全的方式为两个请求生成相同的会话ID。

有人知道我们如何解决这个问题吗?

附言:我们使用的是带有以下会话配置的laravel 4.1:

代码语言:javascript
复制
return array(

    'driver' => 'redis',

    'lifetime' => 720,

    'expire_on_close' => false,

    'files' => storage_path().'/sessions',

    'connection' => null,

    'table' => 'sessions',

    'lottery' => array(2, 100),

    'cookie' => 'laravel_session',

    'path' => '/',

    'domain' => '.ourdomain.com',
);
EN

回答 3

Stack Overflow用户

发布于 2016-05-18 02:40:41

这个问题我已经遇到过很多次了,没有特别的原因,Amir也没有提到。

清除域cookies适用于我所看到的场景。

票数 0
EN

Stack Overflow用户

发布于 2017-01-17 12:58:12

在我的例子中,这是缓存配置文件的问题。Laravel创建了一个配置文件,该文件缓存在bootstrap/cache文件夹中。将此config.php文件重命名为其他名称并运行"php artisan cache:clear“

然后运行这个站点,它应该可以正常工作

票数 0
EN

Stack Overflow用户

发布于 2019-06-26 08:51:40

这可能与这个众所周知的问题有关

Laravel 5.0 - Asyncronous AJAX Requests cause Session Variable Changes to be Overwritten #7549

如果多个请求试图覆盖会话,而会话文件没有锁,则可能导致会话文件损坏(被覆盖)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27938723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档