使用slim-jwt-auth生成令牌

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用slim-jwt-auth生成令牌相关的知识,希望对你有一定的参考价值。

我正在使用slim-jwt-auth为JSON API创建基于令牌的身份验证。

文档非常有用,但我不明白的一件事是如何生成令牌?文档说中间件能够解码令牌,但看不到任何编码方式。

我见过的一些项目使用firebase/jwt,但我不确定这是否需要,或与slim-jwt-auth兼容。

slim-jwt-auth能够生成令牌吗?

答案

您可以但不需要安装额外的库来生成令牌。中间件在内部使用firebase/php-jwt,因此您可以使用相同的库来生成令牌。像下面这样的东西。

use FirebaseJWTJWT;
use TuupolaBase62;

$now = new DateTime();
$future = new DateTime("now +2 hours");
$jti = Base62::encode(random_bytes(16));

$secret = "your_secret_key";

$payload = [
    "jti" => $jti,
    "iat" => $now->getTimeStamp(),
    "nbf" => $future->getTimeStamp()
];

$token = JWT::encode($payload, $secret, "HS256");

您也可以查看Slim API Skeleton获取灵感。

另一答案

根据slim-jwt-auth登陆页面上的免责声明,中间件只处理令牌;没有提供任何生成它们的方法。

当心!中间件不实现OAuth 2.0授权服务器,也不提供生成,发布或存储身份验证令牌的方法。它仅在通过标头或cookie传递时解析和验证令牌。

(重点是我的)

您确实可以使用另一个库来生成JWT令牌,然后由slim-jwt-auth使用。只要两个库都正确地实现了规范,至少如果您只使用强制实现规范的各个部分,则应该没有互操作性问题。


您可以查看jwt.io以获取用于JWT处理的php库列表,但firebase/jwt将是一个很好的起点。如果您不是自己生成令牌,而是考虑将令牌的身份验证和签发完全委托给第三方,那么我建议您查看Auth0

披露:我在Auth0工作。

以上是关于使用slim-jwt-auth生成令牌的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 DocuSign Python 代码生成 jwt 令牌

尝试使用 .NET JWT 库生成令牌时出错

如何使我的代码生成令牌并将其返回以对用户进行身份验证?

CSRF 令牌生成

Apollo Codegen 没有找到生成代码的操作或片段

postman 自动生成 curl 代码片段