2013-12-18 3 views
3

Несмотря на все остальные вопросы о переполнении стека, я не смог решить проблему со всей предоставленной информацией.
Вот почему я решил создать новый.

Так я реализую помнить меня функцию в моей форме входа в систему с флажком, который выглядит так:Symfony2: помните, что cookie удаляется при повторном открытии браузера

<input type="checkbox" id="form_saveCredentials" name="form[saveCredentials]"> 

При входе в систему все выглядит отлично и печенье получает установлен правильно

cookie gets set correctly

Через весь сеанс браузера файл cookie остается в живых.
Но когда я закрываю браузер и снова открываю его, cookie все еще там (еще не перешел на мой локальный хот!).

Когда я перейти на мой сайт на локальных куки будут удалены в соответствии с заголовком ответа

enter image description here

я не имею, почему печенье получает удалено на навигацию на сайт.

Может быть, проблема заключается в securtiy.yml настройки для функциональности Remember_Me

firewalls: 
    somefirewall: 
     form_login: 
      remember_me: true 
remember_me: 
     key: %secret% 
     lifetime: 31536000 
     remember_me_parameter: 'form[saveCredentials]' 
     path:/
     domain: ~ 

Любые идеи о том, как решить эту проблему? Заранее спасибо

+0

Я также обнаружил ошибку, вы когда-нибудь находили решение? – Joe

+0

Я не нашел решения для проекта, над которым я в настоящее время работал. Хотя проблема исчезла, когда я использовал помню меня funtionalitie в новом проекте. В этом проекте я расширил fosuserbundle вместо его переопределения. Наверное, это решило, но конечно. –

ответ

5

Недавно я имел эту проблему, и вот решение я нашел:

Причины, почему печенье удаляемая потому информация о пользователе, что печенье содержит ничего, что знает 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 и посмотрите, не можете ли вы что-то понять!

Удачи вам!

+0

Этот ответ должен быть принят. У меня была та же проблема, но не по той же причине, но был задействован тот же метод («TokenBasedRememberMeServices :: processAutoLoginCookie»). В моем случае я использую электронную почту, а не имя пользователя для аутентификации пользователей. Даже если вы укажете, что поставщик по умолчанию должен использовать другое поле, кроме 'username', служба« запомнить меня »все равно сохранит имя пользователя в файле cookie. Вы должны написать свой собственный пользовательский провайдер именно так, как описано здесь: http: // symfony.com/doc/current/cookbook/security/entity_provider.html # using-a-custom-query-to-load-the-user –

+0

Отлично, какая порочная ошибка! – AlexisWbr

-2

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

Смежные вопросы