Проблема с sfRemember cookie / sfGuard Запомнить меня - PullRequest
0 голосов
/ 29 апреля 2010

Я использую Symfony 1.4 с Doctrine.

Извините, если это глупый вопрос, но что именно нужно построить поверх sfDoctrineGuardPlugin, чтобы работала функция "запомнить меня"?

Когда я вхожу в систему, создается файл cookie sfRemember со 15-дневным сроком действия по умолчанию, а ключ запоминания сохраняется в таблице sf_guard_remember_key плагина.

Без каких-либо настроек плагина метод SignIn () sfGuardSecurityUser создает cookie, но метод Signout () стирает его, не оставляя cookie, если вы не вошли в систему!

Signin():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, $key, time() + $expiration_age);

Signout():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, '', time() - $expiration_age);

Я вижу, что таблица базы данных сохраняет куки как отношение sf_guard_user, но это не очень хорошо, если куки нет ...

Буду признателен, если кто-нибудь скажет мне, что мне здесь не хватает, и в идеале, если я не позволю методу Signout () удалить cookie, нужно ли мне писать код для чтения файла cookie самостоятельно или это автоматизировано где-то / как-то? У меня установлены стандартные версии Symfony 1.4 и sfDoctrineGuardPlugin.

Все это кажется совершенно неправильным, и документации по этому вопросу не существует.

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 29 апреля 2010

Почему вы хотите сохранить файл cookie для запоминания после выхода пользователя из системы?

Единственная цель состоит в том, чтобы держать пользователя вошедшим в систему, даже после того, как истек срок его текущей сессии - следовательно, cookie. Это означает, что если он закроет браузер (и cookie-файл сеанса будет удален), он автоматически войдет в систему с помощью cookie-файла запоминания при следующем посещении сайта.

Но если он выходит из системы, мы хотим полностью выйти из него - вот почему необходима очистка файла cookie для запоминания.

...