Мне нужна очень простая форма входа в систему, поэтому я использую для этого аутентификатор Symfony Guard.
Мое приложение является многодоменным, на данный момент вход возможен только для 3 из них (а 2субдомены).Но я не могу войти ни на одном из них.
Во-первых, вот несколько ресурсов:
Я не понимаю почему, но для отладки я попытался обновить config/packages/dev/web_profiler.yaml
для установки intercept_redirects: true
, чтобы отладить куки и конфигурацию безопасности, и вот что я имею при воспроизведении сценария обычного входа в систему:
- При доступе к странице бэкэнда (которая показывает форму входа в систему) у меня есть файл cookie сеанса со значением, таким как
llno5smlmsema5nq02kr30s6m2
. - После того, как я отправляю форму с правильными значениями, я вижу страницу перенаправления профилировщика,и панель инструментов веб-отладки показывает мне, что я
Logged in as Pierstoval
, а cookie-файл сеанса, отправленный ответом, меняет идентификатор и становится b1vbcnvp7e6p0j0o0vtd7ui7bf
(потому что по умолчанию брандмауэр переносит сеанс при входе в систему), так что это работает.Я даже вижу, что токен находится в сессии.Я также добавил операторы dump()
в метод Session::save()
, и при выводе содержимого сеанса отображается токен.И токен находится в файле сеанса, когда я тоже его выгружаю (в var/sessions/dev/sess_b1vbcnvp7e6p0j0o0vtd7ui7bf
). - Я нажимаю на ссылку
http://back.esteren.docker/fr/
, отображаемую на странице перенаправления, и затем я вижу, что идентификатор файла cookie сеанса неизменить (это тот, который был установлен после входа в систему), но на этот раз, панель инструментов веб-отладки показывает мне, что я Logged in as anon.
.
Для меня есть проблема, когда сеанссохраняется, поэтому я посмотрел на файлы сеанса в var/sessions/dev/
, после перенаправления .
Когда я cat var/sessions/dev/sess_b1vbcnvp7e6p0j0o0vtd7ui7bf
, я вижу это:
_sf2_attributes|a:2:{s:18:"_csrf/authenticate";s:43:"bCm23vBGyrq52caehAH9cCTjJkAmdT9j9Z8yygaET78";s:26:"_security.main.target_path";s:30:"http://back.esteren.docker/fr/";}_sf2_meta|a:3:{s:1:"u";i:1538092899;s:1:"c";i:1538092750;s:1:"l";s:5:"86400";}
Что при десериализации массива мешков атрибутов сеанса дает следующее:
array:2 [
"_csrf/authenticate" => "bCm23vBGyrq52caehAH9cCTjJkAmdT9j9Z8yygaET78"
"_security.main.target_path" => "http://back.esteren.docker/fr/"
]
Это означает, что токен не был сохранен в сеансе после успешного входа в систему.
И еще хуже:так как я уже отлаживал файл сеанса до перенаправления , я знаю , что он был сохранен в сеансе и в какое-то время он был удален из него до начала сеансаСохранено в другой раз.
Как это вообще возможно?Я что-то забыл в своей конфигурации безопасности?
Как примечание, я протестировал с и без докера (с простой установкой php-fpm + nginx), и ни один не работал, это вероятноозначает, что это не проблема разрешения со стороны докера ...