Срок действия сеанса Laravel 4 не истекает после истечения срока службы

#php #authentication #laravel

#php #аутентификация #ларавель

Вопрос:

Я установил 'lifetime' => 10 в своем конфигурационном файле сеанса, но срок его действия вообще не истекает.

В laravel 3 с этой настройкой после входа в систему, когда лимит в 10 минут превышен, сеанс истекает должным образом, и пользователь перенаправляется для повторного входа в систему.

В laravel 4 этого не происходит. Через 10 минут я могу обновиться, делать что угодно, и все равно сеанс действителен.

Я тестирую оба варианта на одной машине с аналогичными настройками… Что я упускаю из виду?

Комментарии:

1. Я не знаю, что не так с вашим приложением, но сессия lifetime работает со мной. Если ваш сеанс driver является файловым, убедитесь, что у него есть доступ на запись app/storage в папку. Для быстрого тестирования вы можете попробовать 'lifetime' => 1 вместо 10 минут.

Ответ №1:

Я понял. Проблема была в паре конфигурации lifetime и expire_on_close .

Если expire_on_close установлено значение true, laravel 4 будет проигнорирован lifetime . У меня было:

 'lifetime' => 1,
'expire_on_close' => true,
 

и в этом случае сеанс был действителен через 1 минуту — он истекал только после закрытия браузера. Я изменил его на:

 'lifetime' => 1,
'expire_on_close' => false,
 

и теперь сеанс истекает через 1 минуту. независимо от того, закрыт браузер или нет — достаточно близко к тому, что я хотел.

Причина, по которой я был сбит с толку и не понял этого раньше, заключалась в том, что комментарии там неясны в этом вопросе и что в Laravel 3 это работало по-другому…

Комментарии:

1. Это где-нибудь в документации? Действительно должно быть. Я также столкнулся с той же проблемой и понятия не имел, что не так. Я не согласен с логикой с точки зрения безопасности, защищенным приложениям нужна возможность устанавливать сеансовые файлы cookie, срок действия которых также истекает.

2. @JonoCoetzee Я не нашел его в документах, только комментарии в файле конфигурации дали мне несколько подсказок — в общем, я потратил несколько часов на тестирование этого поведения и понял это. Я также согласен с тем, что он должен работать лучше, всегда позволяя истекать cookie

3. также столкнулся с той же проблемой сегодня, но в моем случае мне нужно, чтобы оба поддерживались, продолжительность сеанса 8 часов, и в случае, если пользователь закроет браузер, он также будет уничтожен. может быть, какая-нибудь информация по этой теме?

4. Спасибо. Это работает для меня и для laravel 5.1. первая проблема с проводом.

5. Я поискал в своей vendor/laravel папке expire_on_close и нашел только один результат. expire_on_close Здесь используется значение конфигурации: github.com/laravel/framework/blob/5.6/src/Illuminate/Session/… Эта проблема (и мой собственный опыт) говорит о том, что Том прав: github.com/laravel/framework/issues/9321#issuecomment-113331445 Я предложу запрос на извлечение, чтобы улучшить комментарии по адресу github.com/laravel/laravel/blob/v5.6.33/config/session.php#L23 потому что документы ( laravel.com/docs/5.6/session#configuration ) не упоминай об этом.