即使令牌是在邮递员中创建的,JWT 令牌也会返回空

Posted

技术标签:

【中文标题】即使令牌是在邮递员中创建的,JWT 令牌也会返回空【英文标题】:JWT token retuns empty even though the token was created in postman 【发布时间】:2018-11-21 23:30:01 【问题描述】:

我正在使用 JWT 构建一个小型 API,当我在 API 中使用客户端 ID 密钥创建我的令牌后,在客户端使用他的客户端 ID 密钥发送它之后,我尝试在邮递员中取回该令牌成功创建令牌,但我得到响应 access token not found 如果它无法在我创建的常量中找到令牌(在 constant.php 中),这是我设置为响应的响应,请问我是什么做错了,我试图在我的源代码上编辑代码,但没有。请如果我的帖子需要更正,请进行编辑。

 api.php //where I generate my token and create_insert_new_delivery() is the function that checks the incoming parameter for adding a new delivery according to the API i am building

public function generateToken() //WORKS PERFECTLY, BUT WHEN I TRY TO GET THE TOKEN
    try 
    $client_id_key = $this->validateParameter('client_id_key', $this->param['client_id_key'], STRING);
    //$client_secret_key = $this->validateParameter('client_secret_key', $this->param['client_secret_key'], STRING);
    //client_secret_key should be commented out it is not used for validation for security purposes, only id key

    $stmt = $this->dbConn->prepare("SELECT * FROM `api_clients_properties` WHERE client_id = :client_id_key");
    $stmt->bindParam(":client_id_key", $client_id_key);
    $stmt->execute();
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!is_array($user))
        $this->returnResponse(API_NAME_REQUIRED, "Invalid Client Id Key");
    

    if ($user['property_status'] == "not verified")
       $this->returnResponse(API_NAME_REQUIRED, "Property not verified, please contact admin, to verify it");   
    

    $payload = [
       'iat' => time(),
       'iss' => 'localhost',
       'exp' => time() + (60),
       'userId' => $user['id']
    ];

    $token = JWT::encode($payload, SECRETE_KEY);

    $data = ['token' => $token];
    $this->returnResponse(SUCCESS_RESPONSE, $data);
 catch (Exception $e)
    $this->throwError(JWT_PROCESSING_ERROR, $e->getMessage());




public function create_insert_new_delivery()
$c_payment_type = $this->validateParameter('payment_type', $this->param['payment_type'], STRING, true);

$c_date_of_delivery = $this->validateParameter('date_of_delivery', $this->param['date_of_delivery'], STRING, true);

$c_country_from = $this->validateParameter('country_from', $this->param['country_from'], STRING, true);


try 
      echo $token = $this->getBearerToken(); //Trying to get this token out, but its empty what am i doing wrong.



   catch (Exception $e)
      $this->throwError(ACCESS_TOKEN_ERRORS, $e->getMessage()); //THIS "ACCESS_TOKEN_ERRORS" gives undefined token 
  





 //constants.php the constant to serve errors
   /*Server Errors*/
define('JWT_PROCESSING_ERROR',                 300);  
define('AUTHORIZATION_HEADER_NOT_FOUND',       301);
define('ACCESS_TOKEN_ERRORS',                 302);

【问题讨论】:

【参考方案1】:

对于将来可能遇到问题的人,请确保您的授权值(即 Bearer)之间的空格是准确的,它们之间只有一个空格,例如 Bearer YOUR.TOKEN.HERE @987654321 @你可以回显你的令牌,就像我在我的问题中所做的那样,你将获得所需的令牌。

【讨论】:

以上是关于即使令牌是在邮递员中创建的,JWT 令牌也会返回空的主要内容,如果未能解决你的问题,请参考以下文章

颤振错误使用jwt令牌授权

即使我在授权中输入令牌,JWT 仍返回无效签名错误

如何使用 Node、Express、Axios 在 ReactJS 前端设置带有 JWT 令牌的 cookie

JWT 令牌在一定时间后不会过期

取回不记名令牌邮递员扑腾

节点 Keycloak 请求即使使用不记名令牌也会返回登录