如何仅使用用户名字段使用CakePHP 2.2+的Auth组件?

时间:2012-07-30 13:53:13

标签: php cakephp

我正在开发一个管理两种登录的控制器:

  1. 电子邮件和密码
  2. 电子邮件
  3. 第二种类型只有电子邮件字段。原因是第三方提供商向我提供了已登录用户的电子邮件,但我还需要检查我的数据库中是否存在该电子邮件。

    所以我有两种类型的身份验证,问题是:

    我可以将Auth用于第二种类型吗? (只有电子邮件支票)

    谢谢

3 个答案:

答案 0 :(得分:1)

我没有看到在这里使用Auth的原因(你正在使用这种方法滥用整个Auth机制。它只是处理简单查找的巨大开销)。 只需使用find(first)检查电子邮件是否存在并相应地使用结果。这就是它的全部内容。

答案 1 :(得分:0)

您可以在此链接中看到: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

<?php
// Pass settings in $components array
public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

这对我来说很适合你!

答案 2 :(得分:0)

阅读本文

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

试试这个: -

<?php
// Pass settings in $components array
public $components = array(
    'Auth' => array(
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login',
            'plugin' => 'users'
        ),
        'authError' => 'Did you really think you are allowed to see that?',
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

?>

或者

<?php
// Pass settings in $components array
public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);