Я переместил свой проект Symfony в производственную среду на новый сервер.Кажется, все прошло нормально, композитор установился нормально и т. Д. Однако форма регистрации, которую мы используем FOSUSERBUNDLE, теперь возвращает ошибку " Маркер CSRF недействителен. Пожалуйста, попробуйте повторно отправить форму. ",Повторная отправка формы просто возвращает ту же ошибку.У меня не было проблем с этим на сервере разработки.
Я переопределяю регистрационную форму FOSUERBUNDLE и шаблон страницы .twig, но изменения минимальны, кроме добавления некоторых полей формы.
Я подтвердил, чтосеансы создаются в var / session / prod.В регистрационной форме есть поле
<input type="hidden" id="fos_user_registration_form__token" name="fos_user_registration_form[_token]" value="U5ONtHIcHgIpmj9yNWOl13r91QGzgbqu4y3ypk3rq34" />
, но я также пытался принудительно заполнить поле _csrf_token в форме, но это не помогло.
Из security.yml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
default_target_path: app_startpage
always_use_default_target_path: true
logout:
handlers: [logout_listener]
anonymous: ~
switch_user: ~
remember_me:
secret: '%secret%'
Есть ли какой-нибудь другой код релевантности, который я могу показать?
Решено : Я наконец нашел здесь поток с решением, которое сработало.Мы работаем с этим сайтом с субдоменами (у каждого «бизнеса» есть собственный субдомен), и я добавил код, чтобы файлы cookie распределялись по субдоменам: cookie_domain: «.% Base_url%».Устранение этой проблемы решило проблему с неверным токеном csrf.Оригинальный пост: stackoverflow.com/a/49481416/6759549