使用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带来的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |