首页 / PHP / 使用PHP进行JWT“签名验证失败”
使用PHP进行JWT“签名验证失败”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP进行JWT“签名验证失败”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1484字,纯文字阅读大概需要3分钟。
内容图文
我正在使用带有PHP的Firebase / 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;
}
?>
它失败,返回“签名验证失败”错误.
任何帮助表示赞赏.谢谢.
解决方法:
它没有验证的问题是因为我在jwt上使用json_encode并且导致它再次被引号括起来所以令牌看起来像这样的“”eY0lkajflajk ….“”并且这导致了验证异常.谢谢@zerkms带来的.
内容总结
以上是互联网集市为您收集整理的使用PHP进行JWT“签名验证失败”全部内容,希望文章能够帮你解决使用PHP进行JWT“签名验证失败”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。