如何组合CakePHP';s使用第二种身份验证方法的身份验证助手


How can I combine CakePHP's Auth helper with a second authentication method?

我已经使用CakePHP的Auth助手有一段时间了,虽然它很成功,但最近我被要求重新使用我们的系统。我们将允许用户使用他们的Active Directory凭据登录。

事实上,对用户进行身份验证很容易,而且我已经有了这样做的代码。然而,Auth本身就笼罩在神秘之中,我还没有浏览过它的源代码。我想做的是让系统尝试使用标准的Auth方法进行身份验证,如果失败,则在Active Directory上回退并尝试以这种方式进行身份验证。

在数据库方面,我想我需要修改我的用户表,以某种方式存储Active Directory凭据(实际上,存储AD用户名这样简单的东西就足够了,因为它只是一个链接),然后手动登录该用户。有没有一种方法可以告诉Auth"嘿,我现在以这个用户的身份登录",而不需要对login()执行POST操作?

我这么做的主要原因是为了避免在项目的其他地方重写大量代码,完全放弃Auth。不过,这可能是个坏主意,如果我引入了一些隐藏的不安全感,这会在以后折磨我。

哦:我们使用的是CakePHP 1.3。我并不反对将项目升级到2.0版本,但除非有充分的理由,否则我会避免。

我相信您可以调用:$Auth->login($user);,其中$user包含查询的数据。因此,如果你在数据库中有与用户帐户记录相关联的Active Directory凭据,你可以只做:

$user = $this->User->find('first', array('conditions' => array({ACTIVE RECORD SEARCH})));
$Auth->login($user);

现在您已作为该用户登录。