如何使用PHP提取已解码的JWT Web令牌的有效内容数据

我有一个解码为以下内容的网络令牌:</ p>

  {
typ:“JWT”,
alg:“HS256”
}。
{
iat:1435688301,
iss:“localhost”,
data:{
user_id:2
}
}。
[签名]
</ code> </ pre>

我将它存储在变量$ data中,并且不知道如何访问'iat'值, 或'user_id'。 任何人都可以帮帮我吗?</ p>

我已经尝试了</ p>

  $ issuanceDate = $ data ['iat']; 
</ 代码> </ pre>

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

非常感谢任何帮助,谢谢。</ p>
</ div>

展开原文

原文

I have a web token which decodes to the following:

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

I have this stored in a variable $data, and have no idea how to access the 'iat' value, or the 'user_id'. Can anyone help me out?

I've tried

$issuanceDate = $data['iat'];

But that doesn't seem to be working. I need the user id too, but that is nested in $data.data.

Any help would be much appreciated, thanks.

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

1个回答



我已经解决了我的问题。 我的解决方案:</ p>

从php-jwt :: decode返回的已解码标记'$ data'是一个对象,我只是使用</ p>

将其转换为数组 n

  $ unencodedData =(array)$ data; 
</ code> </ pre>

并使用</ p>

$ issuedAt = $ unencodedData ['iat'];
</ code> </ pre>

此外,该对象包含嵌套对象$ data-&gt; data。 为了访问它,我将外部'$ data'对象转换为如上所述的数组,并访问嵌套的'data'对象,如下所示:</ p>

  $ user_id = $ unencodedData ['  data']  - &gt; user_id; 
</ code> </ pre>
</ div>

展开原文

原文

I have solved my problem. My solution:

The decoded token, '$data', returned from php-jwt::decode was an object, I simply cast it to an array using

$unencodedData = (array) $data;

and accessed the 'iat' field using

$issuedAt = $unencodedData['iat'];

Also, the object contained a nested object $data->data. To access this I cast the outer '$data' object to an array as above, and accessed the nested 'data' object like this:

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

duanlumei5941
duanlumei5941 为什么要转换为数组而不是仅仅用作对象?
5 年多之前 回复
立即提问
相关内容推荐