Заголовок авторизации JWT или HTTP не работает на живом сервере - PullRequest
1 голос
/ 05 мая 2020

Доброе утро,

Я генерирую токен доступа 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" 
    ));
}
?>

1 Ответ

0 голосов
/ 05 мая 2020

Удалось решить проблему, видимо PHP заголовки авторизации по умолчанию отключены, пришлось добавить следующие строки в мой htaccess

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...