加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP进行JWT“签名验证失败”

发布时间:2020-12-13 22:26:53 所属栏目:PHP教程 来源:网络整理
导读:我正在使用带有 PHP的Firebase / JWT.我试图在“解码”的php文件中读取令牌,但它显示签名验证失败,不知道为什么会发生这种情况.这就是我编码令牌的方式 ?php use FirebaseJWTJWT;require 'vendor/autoload.php';require('config/Database.php');$db = new
我正在使用带有 PHP的Firebase / JWT.我试图在“解码”的php文件中读取令牌,但它显示签名验证失败,不知道为什么会发生这种情况.这就是我编码令牌的方式

<?php 
use FirebaseJWTJWT;
require 'vendor/autoload.php';

require('config/Database.php');
$db = new Database;

$key = "helloworld";


//$jwt = JWT::encode($token,$key,'HS512');

$post = file_get_contents("php://input");
$postdata = json_decode($post);

if($postdata){

    $email = $postdata->email;
    $password = $postdata->password;

    $query = "SELECT * FROM users WHERE email = :email";
    $db->query($query);
    $db->bind(":email",$email);
    $rows = $db->resultset();

    if(password_verify($password,$rows[0]["hash"])){
        $rows[0]["Success"] = "Success";
        $token = array(
            "rows" => $rows
        );
        $jwt = JWT::encode($token,'HS256');
        header("auth: " . $jwt);
        echo json_encode($jwt,128);
    }else{
        echo "Failed";
    }
}


?>

然后我正在解码此文件中的令牌

<?php 

use FirebaseJWTJWT;
require 'vendor/autoload.php';

require('config/Database.php');
$db = new Database;

$key = "helloworld";


//$jwt = JWT::encode($token,'HS512');

$post = file_get_contents("php://input");
$postdata = json_decode($post);


if($postdata){
    $userData = $postdata->userdata;
    // check if token is same stored in the database then decode
    $jwt = JWT::decode($userData,array('HS256'));

    echo $jwt;
}
?>

它失败,返回“签名验证失败”错误.
任何帮助表示赞赏.谢谢.

解决方法

它没有验证的问题是因为我在jwt上使用json_encode并且导致它再次被引号括起来所以令牌看起来像这样的“”eY0lkajflajk ….“”并且这导致了验证异常.谢谢@zerkms带来的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读