Я использую Carbon::setTestNow()
для целей тестирования на проекте laravel 4.2 и все время, когда я делаю следующее обновление после вызова метода, где я использовал Carbon::setTestNow()
, система вышла из системы. Это происходит потому, что дата истечения срока действия cookie сеанса устанавливается на Carbon::setTestNow(
). Как я могу переопределить это, потому что раздражает постоянно делать логин. Спасибо, надеюсь, что кто-то может помочь мне найти какое-то решение.Завершение сеанса Laravel на Carbon :: setTestNow()
1
A
ответ
1
Просто прийти к той же ситуации, и вот результат:
«Официальный путь», чтобы продлить Illuminate\Session\Middleware::addCookieToResponse
или ::getCookieLifetime
Но я считаю, что это довольно сложный и раздутой. Приходите к простому решению:
Проверьте, если предоставленный макет время из прошлого, переопределения session.lifetime при необходимости, вот кодоблок я добавил в 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());
}
}
В этот ответ приходит поздно , надеюсь, что это может помочь кому-то позже.
Сделайте почти то же обходное решение, спасибо человеку за ответ. Надеюсь, что это поможет другим –