Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
REST服务的Codeigniter身份验证密钥_Codeigniter_Rest_Restful Authentication - Fatal编程技术网

REST服务的Codeigniter身份验证密钥

REST服务的Codeigniter身份验证密钥,codeigniter,rest,restful-authentication,Codeigniter,Rest,Restful Authentication,我正在使用Phil Sturgeon Rest服务器编写一个简单的Rest服务。我想使用此库提供的API密钥来保护我的方法 不幸的是,这不是很好的记录,我有点迷路 我想对用户进行身份验证(电子邮件/密码),然后生成一个身份验证密钥,以便在每次请求时发送。但似乎我已经需要身份验证密钥来生成一个。。。创建一个虚拟密钥似乎不是很安全。抱歉,如果这是一个愚蠢的问题,那么什么是最佳实践呢?如果您熟悉其他API,您会注意到一个常见的模式。我建议使用一种身份验证方法,在这种方法中,用户传递他们的电子邮件和密码

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

不幸的是,这不是很好的记录,我有点迷路


我想对用户进行身份验证(电子邮件/密码),然后生成一个身份验证密钥,以便在每次请求时发送。但似乎我已经需要身份验证密钥来生成一个。。。创建一个虚拟密钥似乎不是很安全。抱歉,如果这是一个愚蠢的问题,那么什么是最佳实践呢?

如果您熟悉其他API,您会注意到一个常见的模式。我建议使用一种身份验证方法,在这种方法中,用户传递他们的电子邮件和密码,这将返回生成的唯一身份验证密钥。auth密钥就像一个会话id,想想cookies是如何工作的。然后所有其他API方法都应该选中$this->post('auth'),在处理每个请求之前,您需要将其与会话处理程序(即数据库或会话)进行比较

好像有很多代码是吧?没有

所有模型都应具有重载构造函数:

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

        if(!authCheck($this->post('auth'))){
            returnFailedResponse();
            exit();
        }
}
然后正常地编写API,就像Phil Sturgeon网站上的示例一样。

制作一个具有authCheck的模型以测试auth密钥是否有效,并为returnFailedResponse制作一个方法以返回未经授权的密钥

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


现在,对api的每次调用都应该为Auth设置一个头。例如“Auth:12m34k23b”。

谢谢!我已经停止做类似的事情了。我会将您的答案标记为已接受。我目前处于如何访问会话的状态。我尝试登录后已成功创建会话,但下一个请求未登录。请帮助我理解身份验证方式:(