объяснение
Ваш Symfony использует gitlab в качестве провайдера аутентификации (например: «Я не хочу самостоятельно обрабатывать логины и не хочу хранить пароли»). Это подразумевает, однако, что symfony и gitlab не используют один и тот же сеанс. Выход из gitlab ничего не значит для вашего сайта symfony и наоборот. Поэтому то, что вы описываете как «Это похоже на ошибку» (si c), на самом деле является именно ожидаемым поведением.
То, что вы, очевидно, хотите, так или иначе объединить обе сессии.
Следующее ответ носит теоретический характер и предполагает, что gitlab предлагает функции, которые я описываю по умолчанию, или они должны быть реализованы кем-то способным (в вашем предположительно самостоятельно размещенном gitlab), что приведет к созданию gitlab fork, что в долгосрочной перспективе, вероятно, является плохой идеей , При этом:
наивный подход
При выходе из gitlab перенаправьте пользователя на свою страницу symfony выхода из системы (или, для предотвращения CSRF, определенную c страницу выхода из системы с некоторым проверяемым токеном , как JWT или аналогичный). Поскольку я не знаю много о gitlab, я не знаю ни одного параметра конфигурации gitlab, который бы позволял это.
Однако любой, обладающий достаточными техническими знаниями, может предотвратить перенаправление и, следовательно, все еще оставаться в системе.
более сложное решение (и технически более надежное)
При выходе из gitlab gitlab (не браузер!) Должен был бы вызвать некоторый API на вашем Symfony сайте с проверяемым токеном, чтобы пометить пользователя как вышедшего из системы. Symfony, с другой стороны, придется проверять эту отметку при каждом запросе (возможно, через EventListener) и выходить из системы в случае обнаружения пользователя. Однако он должен быть отключен, как только пользователь снова войдет в систему через OAuth.
Технически, gitlab должен был бы иметь веб-крючок для выхода из системы, чтобы это работало без манипуляций с самим gitlab, иначе вы окажетесь на месте. что вам придется добавить эту функцию в gitlab (через расширение / плагин / ..., если таковые существуют, или добавить код в сам gitlab, который является форком и который будет плохим в долгосрочной перспективе). Другой веб-крючок может убрать пометку с пользователя при успешном завершении oauth.
Поскольку я не очень много знаю о самом gitlab и о том, как именно это будет реализовано, я не буду и не могу предоставить конкретную информацию c инструкции на стороне gitlab. Gitlab предлагает веб-хуки, но они больше связаны с событиями, происходящими с репозиториями (вики, конвейер, проблемы, коммиты, ...) и ничем не связаны с самими пользователями.
Со стороны symfony отметка кто-то из пользователей вышел из системы и снял отметку, когда oauth успешен, а также вышел из системы пользователя, когда отметка была найдена, - это действительно все, что нужно сделать. Однако, не кодовая обезьяна, и этот ответ уже слишком длинный.
Это можно сделать, но усилия могут просто не стоить этого.