用于REST服务的Codeigniter auth密钥

jos*_*ose 11 rest codeigniter restful-authentication

我正在使用Phil Sturgeon Rest Server编写一个简单的RESTful服务.我想通过使用此库提供的API密钥来保护我的方法.

不幸的是,这并没有很好的记录,我有点迷失.

我想验证用户(电子邮件/密码),然后生成一个auth密钥以发送每个其他请求.但似乎我已经需要auth密钥来生成一个...创建一个虚拟密钥似乎不太安全.对不起,如果这是一个愚蠢的问题,但最佳做法是什么?

Mic*_*sky 13

如果您熟悉其他API,您会发现一种常见的模式.我建议使用身份验证方法,用户传递其电子邮件和密码,这将返回生成的唯一身份验证密钥.身份验证密钥就像一个会话ID,想一想cookie是如何工作的.然后,所有其他的API方法应该检查这 - $>后("权威性"),你需要与你的会话处理器(例如数据库或会话)来比较这,你处理每个请求之前.

好像很多代码吧?不.

你的所有模型都应该有一个重载的构造函数:

class MyAPIController extends Rest_controller
{
    public function __construct()
    {
        parent::__construct();

        if(!authCheck($this->post('auth'))){
            returnFailedResponse();
            exit();
        }
}
Run Code Online (Sandbox Code Playgroud)

然后正常写API,就像Phil Sturgeon网站上的例子一样. http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

请有authCheck测试的权威性关键是有效的,并进行了方法returnFailedResponse返回一个401未授权的模式.

在另一个控制器中,我们称之为'Auth',使用上面的构造函数.

现在每次调用你的api都应该为Auth设置一个标题.防爆.'Auth:12m34k23b'.