我正在使用Symfony 2.6.5构建应用程序。我在this和this后建立了自己的用户提供商。
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
我可能应该先看一下。
答案 0 :(得分:1)
我得出的结论是,这是一个文档问题而不是错误。 https://github.com/symfony/symfony/issues/13870底部的说明以及https://github.com/symfony/symfony-docs/issues/5419
上的文档的新问题