CodeIgniter 2.2.0 + ION_Auth + Restful API

时间:2014-11-25 15:28:56

标签: php web-services codeigniter rest ion-auth

我使用带有ion_auth库的代码点火器2.2.0来验证我的用户,但现在我需要创建一些宁静的服务,我想使用this库。我在rest.php中看到,我可以将rest_auth参数更改为' digest'并且我可以将auth_source定义为'库,问题是我不知道我是否可以将ion_auth库设置为身份验证库。

1-在我的/application/confing/rest.php文件中,我设置了这些首字母:

$config['rest_auth'] = 'digest';
$config['auth_source'] = 'library';
$config['auth_library_class'] = 'ion_auth';
$config['auth_library_function'] = 'get_hashed_password';
$config['rest_enable_keys'] = TRUE;

2-我在/ application / libraries / ion_auth

上创建了一个新函数
public function get_hashed_password($username) {
    $user = $this->db->select('password')->where('email',$username)->get('users');
    if ($user->num_rows() == 0) {
        return false;
    }
    $user_details = $user->row();
    $HA1 = $user_details->password;
    return $HA1;
}

然后我尝试连接到我的示例服务,但答案是:

{"status":0,"error":"Invalid credentials"}

我尝试在我的服务器上进行一些调试,我认为问题是get_hashed_pa​​ssword()函数应该使用md5返回密码,如果我直接从数据库中获取密码,ion_auth正在使用bcrypt。我认为这就是为什么摘要['响应']和行号1411中REST_controller的valid_response变量不相等的原因。

我还试图强制REST_crontroller接受凭据(我知道它不正确,但我正在做一些测试)然后我的问题是我总是收到以下错误:

{"status":false,"error":"Invalid API Key "}

任何人都知道如何让它发挥作用?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对于摘要式身份验证,库函数应返回已存储的用户名md5(用户名:restrealm:密码) |例如:md5(' admin:REST API:1234')=' 1e957ebc35631ab22d5bd6526bd14ea2'

我试过,但我通过了: 尝试返回MD5(' $ login:REST API:$ password'); 其中$ login是您的登录名,而密码是密码