Если вы отметите CookieSessionHandler :: write и CookieSessionHandler :: read :
// write
/**
* {@inheritdoc}
*/
public function write($sessionId, $data)
{
$this->cookie->queue($sessionId, json_encode([
'data' => $data,
'expires' => $this->availableAt($this->minutes * 60),
]), $this->minutes);
return true;
}
// read
/**
* {@inheritdoc}
*/
public function read($sessionId)
{
$value = $this->request->cookies->get($sessionId) ?: '';
if (! is_null($decoded = json_decode($value, true)) && is_array($decoded)) {
if (isset($decoded['expires']) && $this->currentTime() <= $decoded['expires']) {
return $decoded['data'];
}
}
return '';
}
вы можете видеть, что должно быть какое-то значение времени для сравнения с текущим значением времени. В противном случае возвращается пустая строка и сессия становится недействительной. Лучший способ сделать это - установить значение конфигурации на очень большое значение (например, 35791394
[~ 68 лет в минутах]). Это отказоустойчиво для 32-разрядных систем, поскольку оно равно 2147483640
, что меньше 32-разрядного значения со знаком. Значение MAX_INT 2147483647
, на всякий случай. Даже если иногда в будущем Laravel переписать время жизни сеанса, чтобы использовать секунды вместо минут, это будет длиться более года.
Другой ответ SO .