Проблема с sfRemember cookie / sfGuard Запомнить меня

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

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

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

Без каких-либо настроек плагина метод sfGuardSecurityUser SignIn() создает 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 ответ

Решение

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

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

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

Другие вопросы по тегам