【发布时间】:2020-08-19 19:06:54
【问题描述】:
早安,
我正在生成一个 JWT 访问令牌并使用 HTTP 授权标头向用户授予访问权限,当我尝试在邮递员的本地服务器上运行它时,并且在承载令牌下的授权中设置令牌后,它是在我的本地服务器上运行,但实时服务器似乎没有收到访问令牌。
<?php
include_once 'config/database.php';
require "../vendor/autoload.php";
use \Firebase\JWT\JWT;
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
$secret_key = "prosper_api";
$jwt = null;
$databaseService = new DatabaseService();
$conn = $databaseService->getConnection();
$data = file_get_contents("php://input");
$authHeader = $_SERVER['HTTP_AUTHORIZATION'];
$arr = explode(" ", $authHeader);
echo json_encode(array(
"message" => "sd" .$arr[1]
));
$jwt = $arr[1];
if($jwt){
try{
$decoded = JWT::decode($jwt, $secret_key, array('HS256'));
print_r($data);
$q = $conn->query("INSERT INTO form (data) VALUES('$data')");
if($q){
http_response_code(200); //200 is ok
echo json_encode(array(
"status" => 1,
"message" => "Form data has been added"
));
}else{
http_response_code(500); //500 is internal server error
echo json_encode(array(
"status" => 0,
"message" => "Failed to create data"
));
}
//Access is granted. Add code of the operation here
//echo json_encode(array(
// "message" => "Access granted:",
// "error" => $e->getMessage()
//));
}catch (Exception $e){
http_response_code(401);
echo json_encode(array(
"message" => "Access denied.",
"error" => $e->getMessage()
));
}
}else{
http_response_code(500); //500 is internal server error
echo json_encode(array(
"status" => 0,
"message" => "Something went wrong with JWT"
));
}
?>
【问题讨论】:
-
我是否需要添加一个 htaccess 文件以便 PHP 不会忽略授权标头?