0

我的用户可以在表单上更改他们的密码。如果此表单有效,我对其进行编码,通过使用使会话无效

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

...将用户刷新到数据库并进行重定向(到相同的 url)。

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

两者都可以单独使用,但不能一起使用:-)

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

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

4

1 回答 1

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,第四个是角色数组。

于 2013-04-11T13:04:15.997 回答