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


partial url needs JWT authentication on slim 3 php framework

我使用tuupola/slim-jwt-auth完成了JWT身份验证的大部分工作。有一件事我不确定该怎么做是部分URL授权。

假设我有公共url

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

然后我有一个子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/内部

谢谢。

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

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

然而,从你的问题中不清楚,但我有一种感觉,你实际上想用任何id来认证产品,而不仅仅是123。要实现这一点,您可以使用regexp。

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