2016-04-27 6 views
1

Я использую Carbon::setTestNow() для целей тестирования на проекте laravel 4.2 и все время, когда я делаю следующее обновление после вызова метода, где я использовал Carbon::setTestNow(), система вышла из системы. Это происходит потому, что дата истечения срока действия cookie сеанса устанавливается на Carbon::setTestNow(). Как я могу переопределить это, потому что раздражает постоянно делать логин. Спасибо, надеюсь, что кто-то может помочь мне найти какое-то решение.Завершение сеанса Laravel на Carbon :: setTestNow()

ответ

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

В этот ответ приходит поздно , надеюсь, что это может помочь кому-то позже.

+1

Сделайте почти то же обходное решение, спасибо человеку за ответ. Надеюсь, что это поможет другим –