首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在将我的API从slim-3转换到slim-4,并且我正在努力弄清楚如何将JWT添加到中间件中

我正在将我的API从slim-3转换到slim-4,并且我正在努力弄清楚如何将JWT添加到中间件中
EN

Stack Overflow用户
提问于 2021-01-29 14:49:40
回答 1查看 81关注 0票数 0

我正在使用composer安装超薄骨架。那些内建的路由可以按预期工作。我知道如何添加之前的路由和数据库连接,但我一直在为如何添加任何JWT库而苦苦挣扎。我找了又找,但我没有找到太多关于Slim-4的文档,而且我所尝试的似乎总是以某种方式失败。

例如,我使用composer安装tuupola/slim-jwt-auth,它说要添加以下代码:

代码语言:javascript
复制
$app = new Slim\App;

$app->add(new Tuupola\Middleware\JwtAuthentication([
    "secret" => "supersecretkeyyoushouldnotcommittogithub"
]));

但是,我到底应该在哪里或者如何将其添加到中间件中呢?是否需要添加到app/midleware.php中?我读到的所有文档的文件结构都与其他目录或诸如此类的文件结构完全不同。一旦把它放在正确的位置,看起来就像是在没有令牌的情况下发出请求时,我应该得到一个401未授权的响应。

在这部分工作之后,我知道我需要创建一个路由来获取我的访问令牌,但我在这个库中看不到任何关于这一点的东西,所以我假设我需要另一个库来编码我的令牌并从我的请求中返回它。

一旦我实际获得了令牌响应并将其传递到实际请求路由的头中,我就假定我做了类似以下的事情

代码语言:javascript
复制
$app->get("/protected-route-name", function ($request, $response, $arguments) {
    $token = $request->getAttribute("token");
    // Not sure what to put next to verify the token and allow the response or display a error if there is no token or the token in invalid.

});

我对firebase或任何JWT库都是开放的,如果有人有他们喜欢的并且运行良好的库,我只是需要一些方向,因为我觉得所有的文档都是缺乏的。

EN

回答 1

Stack Overflow用户

发布于 2021-04-09 06:27:40

代码语言:javascript
复制
      use \Firebase\JWT\JWT;

获取令牌

代码语言:javascript
复制
       $headers = apache_request_headers();
         if(isset($headers['Authorization'])){
    $decoded = JWT::decode($headers['Authorization'], $publicKey, array("RS256"));
    .... verify token.
    }

    $jwt = JWT::encode($payload, $privateKey, "RS256");

爆完了。

你甚至不需要使用中间件来做这件事。slim把自己搞得过于复杂了。但事实是在slim3和slim 4之间,在一个非常基本的设置中,唯一改变的是json编写上的getBody()。

老实说,老实说,我真的不确定这有多大用。现在一切都是基于云的。我发现这一点的唯一原因是试图弄清楚如何在Slim中使用Google Identity Platform。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65949999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档