使用Phil Sturgeon的Rest-Server对数据库进行身份验证

时间:2011-05-17 17:35:28

标签: php api authentication codeigniter rest

我正在尝试修改Phil Sturgeon的休息服务器来验证ion-auth。我将_check_login更改为:

private function _check_login($username = '', $password = NULL)
{
    if (empty($username))
    {
        return FALSE;
    }

    $this->rest->db = $this->load->database('default', TRUE);
    $sql = 'SELECT api_key FROM users WHERE email = ?';
    $query = $this->rest->db->query($sql, urldecode($username));

    if ($query->num_rows() > 0) {
        $user = $query->row_array();
    } else {
        return FALSE;
    }

    // If actually NULL (not empty string) then do not check it
    if ($password !== NULL AND $user['api_key'] != $password)
    {
        return FALSE;
    }

    //return TRUE;
    return $user['api_key'];
}

我的第一个问题是我需要做的事情:

$this->rest->db = $this->load->database('default', TRUE);

在我看来,像$ this-> rest-> db应该已经可以访问了,因为它是在构造函数中设置但是我得到一个错误,说我正在尝试查询非对象,如果我不像上面一样在_check_login中添加load-> database()行。注意:我删除了构造函数中的if语句,该语句仅在启用了键或日志记录时初始化数据库连接,因此这不应该是问题。

我认为我的第二个问题是问题1的结果。无论如何,在对REST_Controller进行更改后,我的REST控制器中的模型不再有效。我得到的错误是:

  

遇到PHP错误

     

严重性:注意

     

消息:未定义属性:User :: $ db

     

文件名:core / Model.php

     

行号:50

当我在我的某个模型中调用某个方法时,它似乎正在发生。

希望这足以帮助查明问题。关于我可能做错的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

我相信db类是$ this-> db。你试过了吗?

编辑:啊似乎$ this-> rest-> db也是$ this-> db的别名。