2015-01-08 3 views
1

В моем приложении symfony2 я пытаюсь войти в систему с включенной функцией «Запомнить меня» по умолчанию. Файл cookie настроен правильно, но пользователь выйдет из системы тем не менее через некоторое время (я бы сказал что-то около часа). Это происходит на моей машине разработки, промежуточной и производственной версии.Запомнить меня не работает

security.yml:

firewalls: 
    default: 
     pattern: ^/ 
     anonymous: ~ 
     form_login: 
      login_path: frontend_user_login 
      check_path: frontend_user_loginCheck 
      username_parameter: user[email] 
      password_parameter: user[password] 
      remember_me: true 
     logout: 
      path: frontend_user_logout 
     remember_me: 
      key: "%secret%" 
      lifetime: 31536000 # 365 days in seconds 
      path:/
      domain: ~ # Defaults to the current domain from $_SERVER 

config.yml:

framework: 
    session: 
     cookie_lifetime: 31536000 
     cookie_httponly: true 
     handler_id: ~ 
     name: mycookie 

Глядя на мое печенье в Chrome, он показывает мне:

Name: mycookie 
Content: hqafha2ut4rpl4bdnh2jhcfm34 
Domain: REPLACED 
Path: /
Send for: Any kind of connection 
Accessible to script: No (HttpOnly) 
Created: Thursday, January 8, 2015 at 10:46:36 PM 
Expires: Friday, January 8, 2016 at 10:46:36 PM 

Я храню My сессий в redis, используя настройку session.save_handler = redis в моем php.ini. Проблема действительно существовала до того, как я переключился на redis и не изменился в процессе, поэтому я не думаю, что это проблема?

Есть ли что-нибудь еще, что мне не хватает? Может быть, есть какая-то конфигурация php.ini, о которой я должен знать?

ответ

0

Хотя ответ от Джей работал для меня, я хотел бы ответить на мой собственный вопрос и вдаваться в подробности обо всех различных конфигурациях как для меня, так и для жизни сеанса.

ЗАПОМНИ МЕНЯ

Существует remember_me ключ для login_form (см мой вопрос выше), но это не то, что я хотя бы. Я до сих пор не уверен, что он делает, но это не значит, что логин всегда считается с включенным remember_me.

Вместо этого, положив always_remember_me: true на вашу remember_me конфигурацию в security.yml, сделал трюк. Второй файл cookie с именем REMEMBERME создан и используется для входа пользователя в систему, если время сеанса заканчивается.

Добавление скрытого поля ввода с именем _remember_me и значением 1 также работает.

СЕССИЯ LIFETIME

Чтобы изменить жизнь сеанса в приложении симфони, вы можете изменить значение в файле конфигурации непосредственно или определить те, в config.yml.

В обоих направлениях значение, которое необходимо изменить, - gc_maxlifetime. Измените значение в php.ini или добавить его в framework - раздел>session в вашем config.yml, как описано здесь: http://symfony.com/doc/current/reference/configuration/framework.html#gc-maxlifetime

Я выбрал для изменения значения в моей конфигурации, потому что это держит это то же самое для Дев/постановки/и мне не нужно возиться с разными файлами php.ini.

1

Я думаю, что эта линия поможет (просто добавьте его в форму авторизации):

// ../path/to/login.html.twig 

<input type="hidden" name="_remember_me" value="1" /> 
Смежные вопросы