Session Symfony2续订会话并存储值

Session Symfony2续订会话并存储值,session,symfony,login,store,invalidation,Session,Symfony,Login,Store,Invalidation,我的用户可以在表单上更改密码。如果该表单有效,我将对其进行编码,使用 $this->get('security.context')->setToken(null); $this->getSession()->invalidate(); …将用户刷新到数据库并重定向(到同一url) 除此之外,我还有一个机制,在转发之前在会话中存储一些信息,并在“转发”模板中显示这些数据 这两种方法各自都能很好地工作,但不能一起工作:-) 我可以看到,该值已经写入(在使会话无效之后),并且

我的用户可以在表单上更改密码。如果该表单有效,我将对其进行编码,使用

$this->get('security.context')->setToken(null);
$this->getSession()->invalidate();
…将用户刷新到数据库并重定向(到同一url)

除此之外,我还有一个机制,在转发之前在会话中存储一些信息,并在“转发”模板中显示这些数据

这两种方法各自都能很好地工作,但不能一起工作:-)

我可以看到,该值已经写入(在使会话无效之后),并且我相信symfony实例化了一个新会话


我只是不知道,那之后会发生什么。也许symfony在“施展魔法”,因为它在显示重定向的url之前“注入”了登录页面。

我真的不明白您想做什么,以及为什么要使会话无效,但您的用户需要登录才能看到重定向的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,第四个参数是角色数组。

可能需要登录才能查看重定向的URL?我想你需要,因为这是一个编辑用户信息的页面。是的,我当然必须。我总是重定向到此对话框中的同一页。更改pw后唯一的区别是,我使会话无效,因此登录页面被“注入”到工作流中。在本例中,我的信息不显示,文本写入会话,但会话似乎发生了更改(第二次)。用户注销,因为他更改了pw。这导致他在控制器中重定向。在重新强制执行时,我使用会话存储一个文本(在本例中,它是在使旧会话无效后存储的!),该文本比我在重定向视图上显示的文本要多。我这里的问题是,“注入”登录屏幕不显示文本,因为会话似乎再次更改。哦,好的,我明白了。你为什么不用闪光灯呢?