2012-06-09 46 views
1

我正在使用Symfony 2和FOSUserBundle编写应用程序。我希望允许多个用户使用相同的名称注册并使用电子邮件来识别它们。我编辑了用户管理器,将loadUserByUsername转换为findUserByEmail()的封装器。这破坏了TokenBasedRememberMeServices,它使用getUsername()来生成记住我的令牌。我怎样才能用我自己的方式来替换这个类,以免在每次更新FW框架版本时都强迫自己陷入黑客symfony文件?如何覆盖组件包中的类?

回答

5

我找到了一种方法:

的Symfony在其配置文件PARAMS包店的类名。您可以通过在config.yml中添加以下行来简单地覆盖这些参数:

# Parameters override 
parameters: 
    security.authentication.rememberme.services.simplehash.class: MyVendor\UserBundle\RememberMe\TokenBasedRememberMeServices 
+1

此用法从3.0开始已被弃用和删除。你不能再这样做,并已被认为是一种不好的做法。如果你想“替换”服务,改变它们的定义或装饰它们。 –