代码之家  ›  专栏  ›  技术社区  ›  alcuadrado

sfDoctrineGuardPlugin:使用电子邮件登录

  •  5
  • alcuadrado  · 技术社区  · 16 年前

    4 回复  |  直到 16 年前
        1
  •  5
  •   Maerlyn    16 年前

    http://bluehorn.co.nz/2009/06/12/symfony-12-propel-and-sfguardplugin-email-login/

    这是为推进写的,但可能很容易适用于学说。

        2
  •  6
  •   oznek    15 年前

    如果我正确理解您的问题,您希望允许使用电子邮件登录。

    http://trac.symfony-project.org/ticket/8919

    那里有个补丁。应用修补程序并在app.yml设置中创建一个条目allow \u login \u with \u email to true:

    all:
      sf_guard_plugin:
        allow_login_with_email: true
    

    这是你需要的吗?

        3
  •  4
  •   Tom    16 年前

    不如保持sfDoctrineGuard的原样,使用现有的username字段,但将电子邮件保存到其中。你的用户会用他们的电子邮件登录。默认的字段长度是VARCHAR(128),这对于任何电子邮件都是足够的。如果我没记错的话,您唯一需要调整的就是sfguard signup、signin等的表单标签(无论您在哪里显示它)。你基本上只需要说“在这里输入电子邮件”,而不是说“在这里输入用户名”。

    唯一的缺点是您丢失了“用户名”,但是您可以将其放在与sfGuardUser相关的单独概要文件中。

    如果您不喜欢这种方法,可以直接调整sfDoctrineGuardPlugin代码,但这可能会引起一些头痛。

        4
  •  2
  •   j0k gauthamp    14 年前

    正如oznek指出的,您必须使用“allow\ login\ with\ email”参数。

    但是,插件中有一个bug(至少在版本5.0.0中)阻止它工作。 您必须修改此文件: /sfDoctrineGuardPlugin/lib/validator/sfGuardValidatorUser.class.php 第44行 替换此项:

    $user = $this->getTable()->retrieveByUsername($username);
    

    有了这个:

    $user = $this->getTable()->$method($username);
    

    $method 变量定义在上面几行,但从未使用过)