如何使用PHP提取解码的JWT Web令牌的有效载荷数据

Hig*_*y62 3 php json jwt

我有一个Web令牌,它可以解码为以下内容:

{
 typ: "JWT",
 alg: "HS256"
}.
{
 iat: 1435688301,
 iss: "localhost",
 data: {
  user_id: 2
 }
}.
[signature]
Run Code Online (Sandbox Code Playgroud)

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

我试过了

$issuanceDate = $data['iat'];
Run Code Online (Sandbox Code Playgroud)

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

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

Hig*_*y62 5

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

从php-jwt :: decode返回的已解码令牌'$ data'是一个对象,我只需使用以下命令将其转换为数组

$unencodedData = (array) $data;
Run Code Online (Sandbox Code Playgroud)

并使用访问了“ iat”字段

$issuedAt = $unencodedData['iat'];
Run Code Online (Sandbox Code Playgroud)

同样,该对象包含一个嵌套对象$ data-> data。要访问此对象,我将外部的“ $ data”对象强制转换为上述数组,并访问嵌套的“ data”对象,如下所示:

$user_id = $unencodedData['data']->user_id;
Run Code Online (Sandbox Code Playgroud)

  • 为什么要转换为数组而不是按照预期仅用作对象? (2认同)