#php #symfony #remember-me
#php #symfony #remember-me
Вопрос:
При следующей соответствующей конфигурации в security.yml
:
security:
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern:
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
logout_on_user_change: true
remember_me:
secret: '%secret%'
secure: true
httponly: true
lifetime: 31536000
Токен сеанса remember me действует только в течение сеанса браузера, а не года, как указано в конфигурации. Может ли это быть связано с secure: true
настройкой? На моей машине разработки не установлен протокол TLS, так может ли это быть причиной? Или есть что-то еще, что я должен искать? Глядя на документацию, похоже, что я все настраиваю правильно, поэтому я немного растерялся.
Комментарии:
1. У меня была такая же проблема, моя проблема заключалась в моем сериализаторе пользовательских прав, в котором отсутствовала соль, поэтому он будет правильно входить в систему, но как только вы вернетесь, он не десериализует мой токен
2. При этом я бы рекомендовал не использовать FOSUB
3. Я нахожусь на этапе этого проекта, когда я не могу переключиться с FOSUB на что-то другое. Можете ли вы написать свое решение в качестве ответа? Может быть, я смогу собрать что-нибудь из этого
Ответ №1:
Оказывается, мое внутреннее ощущение secure: true
было правильным. Я установил его false
во время теста, и файл cookie был правильным. Поскольку на моей машине разработки нет SSL / TLS, она не может отправить защищенный файл cookie, если он настроен. Он должен работать на моем рабочем сервере, учитывая, что у меня есть рабочий SSL / TLS в этой среде.
Ответ №2:
Хотя уже поздно, это может кому-то помочь.
Добавление require_previous_session: false
опции в разделе form_login:
исправлена моя проблема.
Вот так
form_login:
require_previous_session: false
Согласно https://symfony.com/doc/3.1/reference/configuration/security.html ,
по умолчанию сеанс должен существовать до отправки запроса на проверку подлинности. Итак, если вы хотите реализовать функцию remember me, вам нужно установить require_previous_session
значение false