我在laravel 4.2项目中使用 Carbon::setTestNow() 进行测试,并且在我使用 Carbon::setTestNow() 系统登出我的方法调用之后进行下一次刷新时的所有时间 . 这是因为会话cookie到期日期设置为 Carbon::setTestNow( )日期 . 我怎样才能覆盖它,因为一直重新登录很烦人 . 谢谢,希望有人能帮我找到解决方案 .
Carbon::setTestNow()
Carbon::setTestNow(
刚刚遇到同样的情况,结果如下:
"official way"是扩展 Illuminate\Session\Middleware::addCookieToResponse 或 ::getCookieLifetime
Illuminate\Session\Middleware::addCookieToResponse
::getCookieLifetime
但我发现它非常复杂和臃肿 . 来一个简单的解决方案:
检查提供的模拟时间是否来自过去,如果需要,覆盖session.lifetime,这是我添加到 app/start/global.php 的代码块
app/start/global.php
// Set mock time if requested if ( ! empty($_GET['mocktime'])) { try { $real_time = \Carbon\Carbon::now(); $mock_time = \Carbon\Carbon::parse($_GET['mocktime']); \Carbon\Carbon::setTestNow($mock_time); $diff_min = $real_time->diffInMinutes($mock_time); if ($diff_min > 0) { // requested mock time is from the pass $org_lifetime = Config::get('session.lifetime'); Config::set('session.lifetime', $diff_min + $org_lifetime); } } catch (Exception $ex){ Log::warning('Mocktime requested but unable to set: '.$ex->getMessage()); } }
由于这个答案迟到了,希望以后可以帮助别人 .
1 回答
刚刚遇到同样的情况,结果如下:
"official way"是扩展
Illuminate\Session\Middleware::addCookieToResponse
或::getCookieLifetime
但我发现它非常复杂和臃肿 . 来一个简单的解决方案:
检查提供的模拟时间是否来自过去,如果需要,覆盖session.lifetime,这是我添加到
app/start/global.php
的代码块由于这个答案迟到了,希望以后可以帮助别人 .