The*_*ind 6 php rest codeigniter jwt
我正在使用 Codeigniter 休息服务器和 firebase php-jwt 创建一个宁静的服务。创建了一个 api 来返回操作员列表。要访问此 api 客户端必须在标头中发送令牌。示例请求是 -
GET /index.php/operators/prepaid HTTP / 1.1
主机:testing.mydomain.in
授权:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjExNTIxNCIsImlhdCI6MTUxNzk4MjU1NywiZXhwIjoxNTE4MDAwNTU3fQ.PZYh3OlSsKGo_ihPPSm7RrU5BbTNaeTN1fKlNcOZ2r4
缓存控制:无缓存
邮差令牌:933f3b1d-7934-D30A-11bf-f80f3912f433
控制器代码
use \Firebase\JWT\JWT;
class Operators extends REST_Controller
{
private $_payload;
public function __construct($config = 'rest')
{
parent::__construct($config);
$token = $this->input->get_request_header('Authorization');
if(!$token) {
$output = array("Error" => "Access Denied");
$this->response($output, REST_Controller::HTTP_UNAUTHORIZED);
}
try {
$this->_payload = JWT::decode($token, $this->config->item('jwt_secret_key'),array('HS256'));
} catch (Exception $ex) {
$output = array("Error" => $ex->getMessage());
$this->response($output, REST_Controller::HTTP_UNAUTHORIZED);
}
$this->load->model('Operators_Data');
}
public function prepaid_get()
{
$operators = $this->Operators_Data->getOperatorsByService(1);
$this->response($operators);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下结果
{
"Error": "Access Denied"
}
Run Code Online (Sandbox Code Playgroud)
如果令牌不存在,则从控制器构造函数返回。但我在标头授权中发送令牌。
这是在我的本地主机上工作(它返回操作员列表)。但是当我从测试服务器尝试时,它总是返回“拒绝访问”。
更新:很确定服务器忽略了“授权”标头。
也试过
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Run Code Online (Sandbox Code Playgroud)
.htaccess 中的设置
很感谢任何形式的帮助。
添加
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Run Code Online (Sandbox Code Playgroud)
在.htaccess文件的顶部解决了我的情况
| 归档时间: |
|
| 查看次数: |
7824 次 |
| 最近记录: |