【问题标题】:How can I combine CakePHP's Auth helper with a second authentication method?如何将 CakePHP 的 Auth 助手与第二种身份验证方法结合使用?
【发布时间】:2012-02-28 20:46:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 对于 2.0,有很简单的方法可以做到这一点。但是对于 1.3,我很难回答。在我看来,升级有很多很好的理由(一个是这个问题本身,其他是性能、错误修复等等)
  • 我可能会艰难地完成更新,但我必须在当前版本中修改核心。 (一个讨厌的 hack 绕过一个过分热心的 mod-security 安装,不喜欢 Cake 字段命名中频繁出现的“][”)我确定在尝试升级时会咬我.

标签: php cakephp authentication


【解决方案1】:

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

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

现在您以该用户身份登录。

【讨论】:

  • ...令人惊讶的是,这可能是正确的。我正在研究另一种涉及扩展 AuthComponent 类的方法,但如果它有效,这看起来执行起来要快得多。周四考试,今天放假。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多