Session 以编程方式注销当前用户

Session 以编程方式注销当前用户,session,symfony,fosuserbundle,symfony-2.0,Session,Symfony,Fosuserbundle,Symfony 2.0,我正试图以编程方式从侦听器中注销当前用户。 我读到了 完成了这个技巧,但是我不能调用$this->container->get('security.context')->getToken()->getUser()不再是标记,因为标记现在为NULL 如何注销用户但仍让应用程序正常运行? 我在控制器函数中调用了getUser(),因此我应该将令牌设置回与未经身份验证的用户对应的内容。我该怎么做 此外,如果有一种方法可以通过编程启动新会话,并设置一条flash消息来通知用户他已注销,那就太棒了。试试看

我正试图以编程方式从侦听器中注销当前用户。 我读到了

完成了这个技巧,但是我不能调用
$this->container->get('security.context')->getToken()->getUser()不再是标记,因为标记现在为
NULL

如何注销用户但仍让应用程序正常运行? 我在控制器函数中调用了getUser(),因此我应该将令牌设置回与未经身份验证的用户对应的内容。我该怎么做

此外,如果有一种方法可以通过编程启动新会话,并设置一条flash消息来通知用户他已注销,那就太棒了。

试试看

$anonToken = new AnonymousToken('theTokensKey', 'anon.', array());
$this->get('security.context')->setToken($anonToken);

第一个参数是令牌的密钥(即“50cdf89882454”)

Dude。您现在已注销。您希望如何从会话中再次使用用户?我在你的问题中看到了一些逻辑悖论。我不想得到用户,我希望能够调用getUser()方法而不会出现500个内部错误。当一个未注册的用户正在使用该网站时,我可以调用getUser(),因为getToken()实际上返回一个有效的令牌。在以编程方式注销用户时,我将令牌设置为NULL后,我的代码被破坏。为什么不对用户执行任何您想执行的操作,然后在函数结束时终止令牌/会话以将其注销?如果有人感兴趣,现在是
security.token\u storage
$anonToken = new AnonymousToken('theTokensKey', 'anon.', array());
$this->get('security.context')->setToken($anonToken);