0

我将 Module Auth 与 ORM 驱动程序和本机会话一起使用。

数据库配置 'default' 和 'customer_1' 存在于 application/config/database.php 中。

在登录之前,我使用以下命令更改默认数据库配置:

Kohana::$config->load('database')->default = Kohana::$config->load('database')->get('customer_1');

这在模块身份验证登录之前确实有效!

设置默认数据库配置后:

if (Auth::instance()->login($_POST['username'], $_POST['password']) === TRUE) { Request::current()->redirect(); }

这会导致以下错误:

表 'default_database.users' 不存在 [ SHOW FULL COLUMNS FROM `users` ]

出于某种原因,它使用初始默认数据库配置。

我的问题:如何为 Module Auth 设置默认数据库?

4

2 回答 2

1

如果您希望 Auth 模块使用与其他模型不同的数据库,则应按照Gaurav Patel$_db_group的建议使用。但是,您应该只覆盖 Auth ORM 模型(用户、角色和 user_token),而不是类: ORM

APPATH/classes/model/user.php:

class Model_User extends Model_Auth_User
{
    protected $_db_group = 'customer_1';
}

APPATH/classes/model/role.php:

class Model_Role extends Model_Auth_Role
{
    protected $_db_group = 'customer_1';
}

APPATH/classes/model/user/token.php:

class Model_User_Token extends Model_Auth_User_Token
{
    protected $_db_group = 'customer_1';
}
于 2012-04-05T19:54:47.847 回答
1

让我们稍微了解一下。

您实际上使用的是 ORM/Auth 而不仅仅是 Auth。ORM/Auth 中的 ORM 配置为使用默认数据库(如果未指定)。它允许您通过在 ORM.php 文件中重载 $_db_group 来覆盖此选项。

让我们使用 Kohana 的级联文件系统来覆盖它。创建一个新文件: classes/auth.php 。插入此代码:

<?php
class ORM extends Kohana_ORM {
    $_db_group = Kohana::$config->load('database')->get('customer_1');
}

可以了,好了。

于 2012-04-05T15:55:59.713 回答