2012-05-24 2 views
2

Мне нужно знать, как я могу получить, если в приложении зарегистрирован конкретный пользователь в symfony, есть ли способ получить идентификатор сеанса для текущих пользователей?Как определить, зарегистрирован ли пользователь в symfony?

Я попытался с таблицей, когда у меня есть поле с именем is_online, и y установил его, когда пользователь выполнил вход в систему и вышел из системы, поэтому у меня возникает проблема, когда пользователь закрывает браузер или когда заканчивается сеанс, поэтому поле is_online остается верным. Именно по этой причине мне нужен другой способ получить, если пользователь зарегистрирован в приложении.

Любой совет будет полезен.

ответ

4

Вы можете отправить запрос ajax от пользователей и как только кто-то не отправит запрос, например, 1 мин, измените его статус на офлайн. Будет хорошей идеей хранить статусы в некоторых хранилищах с ключевыми значениями i.e MemCache. Смотрите здесь details.

+0

Спасибо, это будет решение, но по безопасности, если приложение находится в бездействии более 15 минут, сеанс должен быть закрыт. – JERC

+0

Например, с запросом ajax каждые 5 минут сеанс никогда не закрывается. – JERC

+0

Я не могу понять, где вы собираетесь использовать сеанс для хранения статусов или я что-то пропустил? –

1

Создайте поле базы данных, например lastonlinetstamp, и метод ping в ajax, который вызывает службу с тем же сеансом каждую минуту. Затем пусть служба ping обновит lastonlinetstamp. Если это значение больше 1 минуты, вы знаете, что пользователь отключен. Но: Это увеличит количество запросов на ваш сервер.

Смежные вопросы