2016-04-27 6 views
1

Ich benutze Carbon::setTestNow() für Testzweck auf Laravel 4.2 Projekt und die ganze Zeit, wenn ich nächste Aktualisierung nach dem Methodenaufruf, wo ich Carbon::setTestNow() System Log mich aus. Dies passiert, weil das Sitzungscookie-Ablaufdatum auf Carbon::setTestNow() Datum festgelegt wird. Wie kann ich das überschreiben, weil es lästig ist, sich ständig neu einzuloggen? Danke, hoffe jemand kann mir helfen, eine Lösung zu finden.Laravel Sitzung Ablauf auf Carbon :: setTestNow()

Antwort

1

Nur um die gleiche Situation kommen und hier ist das Ergebnis:

Der „offizielle Weg“ ist die Illuminate\Session\Middleware::addCookieToResponse oder ::getCookieLifetime

zu verlängern Aber ich finde es ziemlich kompliziert ist und aufgebläht. Kommen Sie nach einer einfachen Lösung:

Überprüfen Sie, ob die bereitgestellte Schein Zeit aus der Vergangenheit ist, überschreiben die session.lifetime, wenn nötig, hier ist der Codeblock I in app/start/global.php hinzugefügt

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

Da diese Antwort kommt spät Ich hoffe, es kann später jemandem helfen.

+1

Machen Sie fast die gleiche Problemumgehung, danke Mann für die Antwort. Hoffe es wird für andere hilfreich sein –