Я пытаюсь избежать двух или более логинов с одним и тем же пользователем одновременно с использованием FOSUserBundle в Symfony 2.4, я не знаю, как получить доступ к информации связанных с аутентифицированными пользователями, и как выйти из системы, если пользователь, который недавно вошел в систему, предварительно аутентифицирован. Что мне не хватает?Избегайте двух или более логинов с одним и тем же пользователем одновременно с использованием FOSUserBundle
ответ
[править]
Чтение свой вопрос еще раз я не уверен, что вы хотите. Ответ я написал ниже держит последних Войти живой и регистрирует старые логины от
[/ править]
пользователя, который вошел в уже
а) начало сеанса на веб-сервер
b) идентифицировал себя, введя правильную комбинацию имени пользователя и пароля.
Знание того, что мы знаем также, что пользователь, который вошел в систему, имеет переменную, хранящуюся в сеансе (возможно, user_id).
Теперь, если вы хотите выйти из других сеансов (с тем же user_id), если пользователи вошли в другой сеанс, у вас возникла проблема, поскольку сеансы не предназначены для обмена информацией с другими сеансами.
Решение может заключаться в том, чтобы добавить столбец в таблицу пользователей вашей базы данных, которая может содержать случайный хэш. Затем, если пользователь входит в систему, вам необходимо сохранить новый хэш в базе данных, а также сохранить хэш в сеансе.
Затем вы должны сравнить хэш сеанса с хэшем базы данных для каждого нового запроса. Если они отличаются друг от друга, и пользователь все равно выполнил вход в систему, но вам нужно зарегистрировать пользователя.
Я думаю вы можете позволить эту работу со следующими EVENT-слушателей (но я никогда не пытался сделать это):
Не вам понять, насколько это плохо? Скажем, сеанс истекает, но состояние (DB предположительно) не было очищено - вы можете в конечном итоге заблокироваться в течение некоторого времени (часы, дни, ...). Вы, наверное, подумали о многом, поэтому начните с написания их здесь. Тогда мы могли бы помочь их собрать ... –