【问题标题】:CakePHP LDAP/MySQL Hybrid ModelCakePHP LDAP/MySQL 混合模型
【发布时间】:2012-02-02 03:00:50
【问题描述】:

我在 CakePHP 中有一个模型(Person),它代表 MySQL 表中的用户。模型中的字段之一是 Active Directory 中用户的用户 ID。我还实现了一个 LdapUser 模型,它可以正确处理对 AD 对象的查询,并使用 useTable = false 设置。

我想向 Person 模型添加一个字段,指示用户当前是否在 AD 中被禁用。我知道如何做所有的 LDAP 查询业务,但问题是我不知道如何将这个属性添加到模型中。我的第一个想法是添加一个静态虚拟字段,在构建 Person 模型期间使用 LdapUser 模型和 ClassRegistry::init('LdapUser') 设置。但是,这不起作用,因为虚拟字段只是 SQL 别名,因此 CakePHP 不会采用我为虚拟字段设置的值。相反,它会尝试将其组合到查询中。

有没有办法在模型中设置静态字段值,即使模型是从数据库表中读取的?

【问题讨论】:

  • 您使用的是 CakePHP 1.x 还是 2.x?

标签: php mysql cakephp active-directory ldap


【解决方案1】:

好的实现将是一种行为。这样您就可以分离所有 LDAP 逻辑,但仍然可以通过 Person 模型访问它。您现在所做的设置似乎不合逻辑,只有一个人,所以这是一个模型。最好在模型后面连接LDAP部分。

关于残疾人的问题:例如,您可以使用 beforeFind 方法加载行为。这样,您可以决定永远无法加载用户,或者您可以将 disabled 标志添加到数据中。

一般来说,模型中只有一个名为 isDisabled() 的方法可以解决您的问题。这种情况下不需要虚拟字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2017-02-01
    • 2012-10-07
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多