Сессия нескольких пользователей в одном браузере - PullRequest
0 голосов
/ 25 октября 2018

Текущее приложение:

Приложение, над которым я работаю, имеет единственную сущность пользователя.

Пользователи могут быть "членами" или "менеджером", используя логическое значениеатрибут хранится в базе данных (is_manager).

Все пользователи подключаются по одним и тем же маршрутам (/ login) и перенаправляются в зависимости от атрибута is_manager.

Вот моя проблема :

Клиент хочет войти в систему как «участник» на одной вкладке, а другой «менеджер» - на другой вкладке того же браузера.Не несколько «членов» / «менеджеров» одновременно в одном браузере.

Как мне добиться этого с помощью Symfony 3.3?Исходя из моей идеи, идентификатор сессии должен зависеть от атрибута is_manager, но я не совсем уверен в этом и не знаю, как это сделать с Symfony.

Любая помощь будет очень полезна!

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вам необходимо настроить систему управления пользователями.Вы можете добавить некоторые переменные в вашу сессию, говоря вашей системе, что она ведет себя как-то иначе (менеджер или пользователь), но если это должно зависеть от открытой вкладки, то лучший подход, о котором я могу подумать, это использование URL.Поместите в URL какой-то токен (конечно, защищенный), который говорит вашей системе, как обращаться с этим пользователем.

При таком подходе, если пользователь закрывает вкладку, он автоматически выходит из системы, по крайней мере, в одной из своих ролей.

Таким образом, вы можете выполнить стандартный процесс входа в систему, установить сеанс дляроль менеджера (более привилегированная) и сборка и предоставление пользователю ссылки на версию, не являющуюся менеджером.Этот URL содержит упомянутый токен, и если он закрывает вкладку и хочет восстановить вкладку, он должен перейти к версии менеджера и снова перейти по ссылке.

0 голосов
/ 25 октября 2018

Вы можете использовать Переключение пользователя , чтобы почти решить эту проблему.Вместо входа в систему в качестве члена или менеджера, они входят в систему как пользователь с ролью ROLE_ALLOWED_TO_SWITCH.Затем вы можете предоставить ссылки на страницу, которую они хотят видеть, с добавленным атрибутом ?_switch_user=member_user или ?_switch_user=manager_user.Оба этих пользователя должны существовать и иметь правильные разрешения.

Это может быть не идеально, например, вам нужно поддерживать 3 разных пользователей для одной учетной записи, и вы должны убедиться, что они случайно не выполнят действия послепереключение роли, но это лучший способ, который я могу придумать, для поддержки такого переключения.

...