Несмотря на все остальные вопросы о переполнении стека, я не смог решить проблему со всей предоставленной информацией.
Вот почему я решил создать новый.
Поэтому я реализую функцию «запомнить меня» в моей форме входа с флажком, который выглядит так:
<input type="checkbox" id="form_saveCredentials" name="form[saveCredentials]">
При входе в систему все выглядит нормально, и cookie устанавливается правильно
Через весь сеанс браузера файл cookie остается в живых.
Но когда я закрываю браузер и снова открываю его, cookie все еще там (еще не перешел на мой локальный хот!).
Когда я перехожу на свой сайт на localhost, cookie удаляется в соответствии с заголовком ответа
Я понятия не имею, почему файл cookie удаляется при навигации по сайту.
Возможно, проблема заключается в настройках securtiy.yml для функции remember_me
firewalls: somefirewall: form_login: remember_me: true remember_me: key: %secret% lifetime: 31536000 remember_me_parameter: 'form[saveCredentials]' path: / domain: ~
Любая идея о том, как исправить эту проблему? заранее спасибо
Я недавно столкнулся с этой проблемой, и вот решение, которое я нашел:
Причина, по которой файл cookie удаляется, заключается в том, что информация пользователя, содержащаяся в файле cookie, не соответствует тому, что знает Symfony. Он не может зарегистрировать пользователя на основе cookie, поэтому он просто удаляет его. Проблема в моем случае была неправильной строкой в моем классе UserProvider. Конкретный метод supportsClass
. Он возвращал 'AppBundle\Security\User'
когда он должен был фактически возвращать «AppBundle \ Entity \ User». Это привело к тому, что Symfony не смог найти пользователей на основе информации в файле cookie, а затем просто удалит файл cookie и продолжит работу.
Вы можете сделать еще несколько проблем при поиске в этом файле: vendor/symfony/symfony/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php
. Играйте в processAutoLoginCookie
и посмотрите, не можете ли вы что-то понять!
Удачи!
Эта проблема может возникнуть, если ваше имя пользователя является действительным адресом электронной почты, но не равно электронной почте. Удалите все @ в именах пользователей.