我正在将代码签名应用程序迁移到Kohana,并希望在可能的情况下利用Kohana的auth模块。我已经查看了Auth模块使用的“标准”数据库架构,但是我已经有包含不同命名和构建方式的相关信息的表和列。

有没有办法更改它在寻找用户名/密码/电子邮件等的地方。也许通过扩展 model_user 和/或 kohana_auth_orm?我想在可能的情况下使用ORM。

我想更改每个项目的表名和列名,以便我可以完全自定义。

如果我被迫使用标准模式,这将降低我的应用程序的灵活性...

我有一个称为“实体”的表格,其中存储(例如用户,事件,文章)的基本细节。该表没有用于用户名/密码/电子邮件的列,因为这些表不适用于事件或文章。用户名等的值存储在查找表中,该表以下面的示例方式映射数据(简短删除)。

Table: entity
    Columns: entity_id

Table: map_entity_attribute
    Columns: entity_id, attribute_id, value

Table: attribute
    Columns: attribute_id, name

示例数据:

entity.entity_id = 99;

map_entity_attribute.entity_id = 99;
map_entity_attribute.attribute_id = 1;
map_entity_attribute.value = 'ThisIsMyUsername';

attribute.attribute_id = 1;
attribute.name = 'Username';

我希望我已经清楚地解释了这一点,因为我意识到数据库模式与众不同。

希望有人可以将我指向正确的方向!

非常感谢,史蒂夫

有帮助吗?

解决方案

Kohana的构建方式使您可以覆盖“应用程序”文件夹中的几乎每个类,并且它将优先于模块中定义的类:http://kohanaframework.org/3.3/guide/kohana/files

特定于您的案件,您应该 覆盖 (不扩展)model_user。为此,您需要将文件名user.php放入应用程序/型号/文件夹中。它可能应该扩展Model_Auth_user类。

您可能必须重写一些课程,但至少其中一些应该像以前有关。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top