Symfony 2.6.5。自定义UserProvider。当User-> isEqualTo返回false时,用户未注销

时间:2015-03-22 23:13:43

标签: symfony

我正在使用Symfony 2.6.5构建应用程序。我在thisthis后建立了自己的用户提供商。

My User类实现了AdvancedUserInterface和EquatableInterface。 如果密码,用户名或isEnabled已更改,则isEqualTo返回false。 我序列化了id,username,password,isEnabled和一些自定义属性。

一切都很好。除以下情况外:

我可以登录(没有RememberMe),一切都很好看。我已经验证我的用户提供程序中的refreshUser()在每个请求中都被调用,就像用户中的isEqual()一样。

如果我直接更改数据库中的用户名并点击刷新,我就没有注销。我的视图显示用户名,并从数据库更改为新值。同样,如果我手动更改数据库中的密码哈希,我也不会注销。我已经验证isEqualTo()返回false,并且$ this-> setAuthenticated(false)在AbstractToken中发生。

如果我将isEnabled更改为false,它会在下次刷新时注销。

要么我做错了,documentation here错了,我误解了它,或者Symfony中有错误。

这不是什么大不了的事。 isEnabled给我一个记录某人的方法很好,但我想更好地理解这一点。

由于

编辑:我刚刚发现我不是唯一一个看到这个的人。

https://github.com/symfony/symfony/issues/13870

我可能应该先看一下。

1 个答案:

答案 0 :(得分:1)

我得出的结论是,这是一个文档问题而不是错误。 https://github.com/symfony/symfony/issues/13870底部的说明以及https://github.com/symfony/symfony-docs/issues/5419

上的文档的新问题