Symfony 2 Logout(UserInterface :: eraseCredentials)

时间:2011-12-10 08:38:37

标签: authentication symfony

我认为eraseCredentials是用于注销的?如果是这样,我该如何清除Doctrine Entity中的会话?

2 个答案:

答案 0 :(得分:28)

不,eraseCredentials()用于在持久化令牌之前擦除敏感数据 - 无论是序列化还是数据库。

要以编程方式注销用户,您可以使用:

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

答案 1 :(得分:0)

除了Elnur Abdurrakhimov所说的内容之外,我建议查看this article,解释我们应该如何以及为什么要使用UserInterface :: eraseCredentials方法。 基本上,重用密码属性来存储纯文本密码然后用编码版本覆盖它是不好的主意,因为它的先决条件错误 - 程序员可能忘记对密码进行编码并保持不变对象,存储纯文本而不是加密密码。