2013-04-10 1 views
0

Мои пользователи могут изменять свои пароли в форме. Если эта форма действительна закодировать его, сессию недействительной с помощьюSymfony2 renew Сессия и стоимость магазина

$this->get('security.context')->setToken(null); 
$this->getSession()->invalidate(); 

... промывать пользователя в базе данных и сделать редирект (к тому же URL).

У меня есть механизм для хранения некоторой информации в сеансе перед пересылкой и отображения этих данных в шаблоне «переадресованный».

Оба хорошо работают сами по себе, но не вместе :-)

Я могу видеть, что значение записывается (после недействительности сессии), и я считаю, что Symfony создает новый сеанс.

Я просто не знаю, что произойдет после этого. Возможно, symfony делает «волшебство», потому что он «вводит» страницу входа в систему, прежде чем показывать перенаправленный URL-адрес.

+0

Возможно, вам нужно войти в систему, чтобы просмотреть перенаправленный URL? Думаю, вам нужно, потому что это страница для редактирования информации пользователя. – Gmajoulet

+0

Да, конечно, мне нужно. Я всегда перенаправляюсь на ту же страницу в этом диалоговом окне. Единственное отличие после изменения pw заключается в том, что я аннулирую сессию, поэтому страница входа в систему «вводится» в рабочий процесс. В этом случае моя информация не отображается, текст записывается на сеанс, но сеанс, похоже, меняется (второй раз). – Sammy

ответ

0

Я действительно не понимаю, что вы пытаетесь сделать, и почему вы аннулируете сеанс, но ваш Пользователь должен войти в систему, чтобы увидеть перенаправленный URL. Ваш код выводит его.

Вы можете войти пользователь, выполнив таким образом:

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; 

$authToken = new UsernamePasswordToken($user, null, 'secured_area', array('ROLE_USER')); 
$this->get('security.context')->setToken($authToken); 

Третий параметр является providerKey, а четвертый массив ролей.

+0

Пользователь вышел из системы, потому что изменил свой pw. Это приводит к перенаправлению его в контроллер. При перенастройке я использую сеанс для хранения текста (в этом случае он сохраняется после недействительности старого сеанса!), Чем я отображал в перенаправленном виде. Моя проблема здесь в том, что «введенный» экран входа в систему не отображает текст, потому что сеанс, похоже, изменился _again_. – Sammy

+0

О, ладно, я вижу. Почему вы не используете флеш-пакет? http://symfony.com/doc/master/book/controller.html#flash-messages – Gmajoulet

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