Cakephp - 如何将动态登录名和密码连接到数据库

时间:2014-06-05 18:04:39

标签: php mysql cakephp

我被要求使用mysql用户登录cakephp应用程序。

我想使用登录表单中的用户名和密码,并在 database.php 配置文件中使用它。

class DATABASE_CONFIG {  

    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => $user,
        'password' => $password,
        'database' => 'cakephp',
        'prefix' => '',
        //'encoding' => 'utf8',
    );
}

要使用mysql数据库中的现有用户,如果可能的话。如果不是,还有其他办法吗?

我刚刚发现这个要添加到课程中:

function __construct(){
    $this->default['login'] = $userSentFromForm;
    $this->default['password'] = $passwordSentFromForm;
}

但我不知道如何从表单中检索登录名和密码,并将其发送到$ userSentFromForm和$ passwordSentFromForm变量中的构造函数。

2 个答案:

答案 0 :(得分:0)

为此,必须为站点的每个用户创建一个MySQL用户帐户。您可以通过对数据库执行SQL语句来添加MySQL用户并为他们定义权限,但这必须以MySQL' root'用户。

请参阅此here上的文档。

由于您通常不希望以root用户身份访问数据库,因此只有在处理注册表单以为每个新注册创建数据库用户时,才需要以root身份单独连接到数据库。

答案 1 :(得分:0)

为此,您必须执行从Auth继承的自定义身份验证组件。这只需要扩展一个方法authenticate(),并在用户登录时返回用户数据,如果没有,则返回false。

您可以在此处查看更多信息:http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#creating-custom-authentication-objects

至于检查用户是否是MySQL用户,请检查mysql.user表。 完整流程如下:How do I retrieve my MySQL username and password?