В настоящее время я ищу способ реализовать одну сессию в Symfony 3.3, и я хочу, чтобы, если я войду из одного браузера, а затем из другого браузера с тем же пользователем, я хочу выйти из первой сессии.
Непростым способом было бы сохранить последний идентификатор сеанса в пользовательской сущности, а затем запрашивать его при каждом запросе, если идентификатор сеанса не тот же и более старый, то пользователь перенаправляется на маршрут выхода из системы.
Мне было интересно, если кто-нибудь знает более простой способ реализации этого, который не может быть в документации Symfony.
Благодарю.
Я решил это с помощью кэша Redis вместо этого, я сохранил идентификатор пользователя в качестве ключа и идентификатор сеанса в качестве данных внутри ключа. Затем при каждом запросе я искал в redis, был ли ключ для текущего пользователя. Если нет, то я создал ключ для этого пользователя с идентификатором сеанса в качестве данных. Если да, то я проверил, был ли идентификатор сессии внутри ключа таким же, как текущий идентификатор сессии. Если это было то же самое, то я просто продолжил в обычном режиме, если нет, я удалил старый сеанс из обработчика сеанса и поместил новый сеанс в ключ.
Я также использую redis в качестве обработчика сессии, поэтому я просто вызвал destroy для старого идентификатора сессии.
Других решений пока нет …