php - 如何在 CakePHP 2.4 中设置 AuthComponent 的数据库?

标签 php mysql database cakephp

我目前正在使用 CakePHP(版本 2.4)编写数据库访问应用程序。出于安全原因,我只被授予读取数据库(“数据数据库”)的权限。因此,我别无选择,只能使用另一个数据库(“应用程序数据库”)来存储我的登录系统和一些其他应用程序数据。

这是一个数据库访问应用程序,我超过 80% 的代码与数据数据库相关,因此我想保留与数据数据库的默认数据库连接。对于我自己编写的模型,我知道我可以设置要使用的数据库:

public $useDbConnect = $applicationDatabase;

$loginDatabase 是我的应用程序数据库的数据库配置。它已经添加到配置中。

问题是,我的登录系统使用的是 Cakephp 的 authComponent,而该组件的默认设置是使用默认的数据库连接。所以,当我打电话时

$this->Auth->loggedIn(); //to check if the user have logged in or not

在任何 Controller 中,它都会给出一个错误代码:

Error: Call to a member function loggedIn() on a non-object 

当我在用户 Controller 中调用 AuthComponent 时,我发现了实际问题:

$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);

这是保存前哈希密码的行(也在cakephp官方网站的官方指南中使用。)它给出了以下错误:

Missing Database Connection

Error: A Database connection using "Mysql" was missing or unable to connect.
The database server returned this error: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

Notice: If you want to customize this error message, create app\View\Errors\missing_connection.ctp

那么,回到问题:有没有办法更改 AuthComponent 使用的数据库设置?

最佳答案

首先,要解决错误:在非对象上调用成员函数loggedIn(),您需要添加$components = array('Auth', 'Session' ); 到您的 AppController。

为了回答您的下一个问题,AuthComponent 不会设置数据库配置来对用户进行身份验证。它将使用“用户”模型使用的数据库表。 因此,将以下内容添加到您的 User.php 模型中:

public $useDbConfig = 'loginDatabase';

确保您拥有一个数据库,其中的 users 表中填充了用户名和密码。另外,正如您的问题中提到的,将 loginDatabase 配置正确添加到 Config/database.php 文件中。

public $loginDb = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'somehost',
    'login' => 'someusername',
    'password' => 'somepassword',
    'database' => 'login_database', //this database should have your users table
);

关于php - 如何在 CakePHP 2.4 中设置 AuthComponent 的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341302/

相关文章:

php - 随机但均匀地将 N 人分组? (姓名和性别)

php - 如何查找是否有新记录插入?

php - 强制表格显示 5 行(有或没有数据)

mysql - 向具有外键约束的表添加行 [MySQL]

database - Windows Phone 7 - 将现有数据库加载到独立存储中

php - WWW 到非 WWW 使用 PHP 重定向

php - 通过php上传pdf文件到mysql时查询失败

php - LIKE 查询不起作用 PDO

Swift 数据库检索数据

database - WordPress 'The following link has expired'