1
我正在使用Firebase/JWT with php。我試圖讀取「解碼」php文件中的令牌,但它顯示Signature驗證失敗,不知道爲什麼會發生這種情況。這是怎麼了編碼令牌JWT「簽名驗證失敗」,使用PHP
<?php
use \Firebase\JWT\JWT;
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, $key, 'HS256');
header("auth: " . $jwt);
echo json_encode($jwt, 128);
}else{
echo "Failed";
}
}
?>
然後我在這個文件
<?php
use \Firebase\JWT\JWT;
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){
$userData = $postdata->userdata;
// check if token is same stored in the database then decode
$jwt = JWT::decode($userData, $key, array('HS256'));
echo $jwt;
}
?>
它無法解碼的令牌,返回「簽名驗證失敗」錯誤。 任何幫助表示讚賞。謝謝。
把代碼作爲文本而不是作爲圖片來代碼 –
什麼是$ postdata-> userdata,你爲什麼要解碼它?另外,你爲什麼'json_encode'你的'jwt'? – zerkms
@zerkms $ posdata-> userdata只是從前端獲取令牌和用戶信息,並將其解碼以獲取用戶的信息。 Json_encode現在不是必需的,但在發送更多數據之前,只需將jwt添加到我的角度,並且使用json格式很容易閱讀。希望這可以回答你的問題。 –