PHP瘦解码JWT令牌

PHP瘦解码JWT令牌,php,json,jwt,slim,restful-authentication,Php,Json,Jwt,Slim,Restful Authentication,我是PHP新手,并使用jwt授权令牌开发restful服务。我跟着 并且在某种程度上理解了代码,但我在这一行中遇到了错误$stmt->bindParam(“user\u id”,$decoded->context->user->user\u id)说 注意:C:\xampp\htdocs\slim2\src\routes.php中的数组到字符串转换在线 请帮我解决这个问题,我不明白什么是上下文->用户->用户id这些是从哪里来的。下面给出了完整的代码 //获取安全数据的路由。 $app->get

我是PHP新手,并使用jwt授权令牌开发restful服务。我跟着 并且在某种程度上理解了代码,但我在这一行中遇到了错误
$stmt->bindParam(“user\u id”,$decoded->context->user->user\u id)

注意:C:\xampp\htdocs\slim2\src\routes.php中的数组到字符串转换在线

请帮我解决这个问题,我不明白什么是上下文->用户->用户id这些是从哪里来的。下面给出了完整的代码

//获取安全数据的路由。
$app->get('/restricted',函数(请求$Request,响应$Response){
$jwt=$request->getHeaders();
$key=“testsecretkey”;
试一试{
$decoded=JWT::decode($JWT['HTTP_AUTHORIZATION'][0],$key,数组('HS256');
}捕获(意外值异常$e){
echo$e->getMessage();
}
如果(isset($解码)){
$sql=“从令牌中选择*,其中user\u id=:user\u id”;
试一试{
$db=$this->db;
$stmt=$db->prepare($sql);
$stmt->bindParam(“用户标识”,$decoded->context->user->user\u id);
$stmt->execute();
$user\u from_db=$stmt->fetchObject();
$db=null;
if(isset($user\u from\u db->user\u id)){
回声json_编码([
“响应”=>“这是您的安全资源!”
]);
}
}捕获(PDO$e){
回显“{”错误“:{”文本“.$e->getMessage().}}”;
}
}
});

您只需将令牌发送到JWT:decode。将代码更改为:

$jwt = str_replace('Bearer ', '', $jwt['HTTP_AUTHORIZATION'][0]);
$decoded = JWT::decode($jwt, $key, ['HS256']);

打印什么(解码)
give?另外,我假设您调用'POST'生成JWT令牌,然后将其传递到'GET'中,如在的测试中所示。您应该正确调试代码,因为给定的消息非常清楚您的问题Beauty
Caddy server
内置JWT令牌作为选项:很容易设置可能的副本