所以我刚刚在Codeigniter 3中完成了REST API的制作,我想用令牌进行身份验证,所以我使用了这个repohttps://github.com/ParitoshVaidya/CodeIgniter-JWT-Sample/tree/CI3
中的JWT我的问题是,如何使我的API控制器要求每个请求都使用令牌?这是我的api控制器
function __construct($config = 'rest') {
parent::__construct($config);
$this->load->helper(array('text','url'));
$this->load->model('Api_model');
}
// GET ARTICLE
function index_get(){
$data = $this->Api_model->get_all_article();
return $this->response($data,200);
}
这是我的代币控制器
public function token_get()
{
$tokenData = array();
$tokenData['id'] = 1;
$output['token'] = AUTHORIZATION::generateToken($tokenData);
$this->set_response($output, REST_Controller::HTTP_OK);
}
我建议将令牌逻辑移动到库中。然后,您将在所有控制器中都可以使用它,并且不必在api控制器中对控制器进行脏的安装。
添加类application\libraries\Token.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Token {
public function token_get()
{
$tokenData = array();
$tokenData['id'] = 1;
$output['token'] = AUTHORIZATION::generateToken($tokenData);
$this->set_response($output, REST_Controller::HTTP_OK); // <--
}
}
您必须在库中提供此REST_Controller
,或者相应地更改此逻辑。
然后在APIController中:
function token_get(){
$this->load->library('Token');
return $this->Token->token_get();
}
// GET ARTICLE
function index_get(){
$token = $this->token_get(); // added this line
$data = $this->Api_model->get_all_article();
return $this->response($data,200);
}
阅读更多关于CodeIgniter 中的库