Я создаю веб-приложение с Symfony3, Nginx, PHP7. Для авторизации я создал класс TokenAuthenticator, который расширяет AbstractGuardAuthenticator. Я могу выполнить аутентификацию с помощью токена и выхода из системы вручную.Symfony 3 TokenAuthenticator конец сеанса
Если я не выхожу вручную, сеанс, похоже, длится вечно. Я хочу, чтобы приложение аннулировало любые сеансы при закрытии браузера. Все пользователи должны повторно аутентифицироваться, если это новый сеанс браузера.
Сессия сохраняется, и меня не просят повторно аутентифицировать, даже когда я перезапустил nginx, php fpm и очистил кеш из строки cmd.
Мой TokenAuthenticator имеет этот метод:
public function supportsRememberMe()
{
return false;
}
config.yml:
session:
handler_id: session.handler.native_file
save_path: "/var/lib/php/sessions/%kernel.environment%"
cookie_lifetime: 0
security.yml:
main:
guard:
authenticators:
- app.token_authenticator
logout:
path: logout
target:/
invalidate_session: true
anonymous: false
php.ini:
session.cookie_httponly On On
session.cookie_lifetime 0 0
session.cookie_path//
Как удалить/уничтожить сессию/куки (PHPSESSID), когда браузер закрыт?
должен быть простой трюк, чтобы сделать это.
Edit:
Получил хорошее объяснение в этом ответе на то, почему на сервере Dev сессии главным образом никогда не истекает https://stackoverflow.com/a/1505596/1249820