#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 ) не упоминай об этом.