【问题标题】:How do I extract the payload data of a decoded JWT web token using PHP如何使用 PHP 提取解码的 JWT Web 令牌的有效负载数据
【发布时间】:2015-09-17 17:06:14
【问题描述】:

我有一个可以解码为以下内容的网络令牌:

{
 typ: "JWT",
 alg: "HS256"
}.
{
 iat: 1435688301,
 iss: "localhost",
 data: {
  user_id: 2
 }
}.
[signature]

我将它存储在变量 $data 中,但不知道如何访问“iat”值或“user_id”。谁能帮帮我?

我试过了

$issuanceDate = $data['iat'];

但这似乎不起作用。我也需要用户 ID,但它嵌套在 $data.data 中。

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 解码后的JWT是一个简单的字符串吗?也许您也可以发布正在解码的代码?
  • 解码后的数据似乎是 stdClass 类型的对象,因为我得到的错误是“不能使用 stdClass 类型的对象作为数组”。
  • 能否请您发布有问题的整个代码?您进行解码并以$data 变量结束的部分?
  • 没关系,我已经解决了(我在下面发布了我的答案),感谢您抽出时间提供帮助,非常感谢。

标签: php json jwt


【解决方案1】:

我已经解决了我的问题。我的解决方案:

从 php-jwt::decode 返回的解码令牌“$data”是一个对象,我只是将它转换为一个数组使用

$unencodedData = (array) $data;

并使用

访问“iat”字段
$issuedAt = $unencodedData['iat'];

此外,该对象包含一个嵌套对象 $data->data。为了访问它,我将外部的“$data”对象转换为上面的数组,并像这样访问嵌套的“数据”对象:

$user_id = $unencodedData['data']->user_id;

【讨论】:

  • 为什么要转换为数组而不是像预期的那样仅用作对象?
猜你喜欢
  • 2018-12-19
  • 2021-12-24
  • 2017-01-06
  • 2022-01-04
  • 2019-10-29
  • 1970-01-01
  • 2018-06-13
  • 2021-06-01
  • 1970-01-01
相关资源
最近更新 更多