部分 url 需要在 slim 3 php 框架上进行 JWT 身份验证

partial url needs JWT authentication on slim 3 php framework

我几乎所有的东西都与 tuupola/slim-jwt-auth 一起使用 JWT 身份验证。我不确定该怎么做的一件事是部分 URL 授权。

假设我有 public URLs

 www.xyz.com/api/v1/products
 www.xyz.com/api/v1/products/123

然后我有一个 sub URL 只需要 /internal

的授权
 www.xyz.com/api/v1/products/123/internal

在中间件中,我有:

 $jwt = new \Slim\Middleware\JwtAuthentication([
    "path" => ["/api", "/other"],
    "passthrough" => ["/api/v1/products", "/other/urls"],
    //more settings....
]);

$app->add($jwt);

所以我的问题是:我怎样才能只保护 /api/v1/products/123/internal

非常感谢。

使用 path 设置你设置的路径应该被验证。要验证以 /api/v1/products/123/internal 开头的所有内容,您可以执行以下操作。

$jwt = new \Slim\Middleware\JwtAuthentication([
    "path" => ["/api/v1/products/123/internal"]
]);

$app->add($jwt);

但是您的问题并不清楚,但我感觉您实际上想要使用任何 ID 而不仅仅是 123 来验证产品。为此,您可以使用正则表达式。

$jwt = new \Slim\Middleware\JwtAuthentication([
    "path" => ["/api/v1/products/(\d*)/internal"]
]);

$app->add($jwt);