【问题标题】:JWT expire. Which method is best?JWT 过期。哪种方法最好?
【发布时间】:2019-05-22 01:23:30
【问题描述】:

我试图让 JWT 过期 我是否应该使用“exp”属性或使用 /DateTime 对象编写 if 语句来生成它?我是 PHP 新手。

我已经尝试过 \DateTime 对象,但它是多余的吗?也许我需要更好地了解 expire 属性在令牌中的工作原理。

#!/usr/bin/env php
<?php
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;
$jwt_key = $client->getClientSecret();
$user_id = $client->getClientId();
$client_id = $client->getId();
$grant_types ='Null'; 
$token_data = array(
'client Id; => $user_id,
'Client Secret' => $jwwt_ket,
'Id' => $client)id,
'Grant Types' => $grant_types
);
$token_string = JWT::encode($token_data, $jwt_key);
$token = new Token($client);
$token->setAccessToken($token_string);
return $token_string;
?>

【问题讨论】:

  • “我已经尝试过\DateTime 对象但它是多余的”是什么意思?此外,我见过的几乎所有 JWT 指南中都显示了如何在 JWT 上设置过期日期。如果您的代码有问题,您需要向我们展示代码并解释实际问题是什么。现在,你的问题很不清楚。
  • 你试过在 php.net 上查找他们每个人都做了什么吗?
  • 我查看了常规属性的 JWT 指南。所以我猜我在 PHP 中的要求是我应该通过 if 语句将令牌设置为过期还是在 JWT 和库的结构中完成
  • 如果您使用的是Firebase\JWT\JWT,请使用exp。如果令牌已过期,库将自动处理它并抛出一个方便的异常,您不需要任何逻辑。

标签: php firebase oauth firebase-authentication jwt


【解决方案1】:

exp 定义令牌过期的时间(以 UNIX 纪元时间表示(自 01.01.1970 00:00 以来的秒数))。 作为令牌验证的一部分,框架将检查 exp 并在 exp 之后收到令牌时认为令牌无效/过期。

这是推荐的标准方式,您不必使用 DateTime 对象实现任何额外的内容。

更多关于exp如何定义的细节可以在my answer here找到

【讨论】:

  • 所以假设我使用标准方式使用在令牌中有时间的 expire 属性,我如何在我的最后跟踪它?
  • 一些框架会随令牌发送一个额外的字段,告诉您令牌何时过期。如果没有,您可以在客户端解码令牌并提取 exp。有效载荷只是 bas64url 编码。
  • 根据您的经验,存储 JWT 的最佳位置在哪里?
  • 这是一个非常常见的问题,您可以在 SO 上找到好的详细答案。我不是前端开发人员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 2011-02-26
  • 1970-01-01
  • 2011-07-04
相关资源
最近更新 更多