我使用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);