我创建了一个基本插件,可以进行一些自定义 Jwt 验证,并在策略中的 req 上设置一个“用户”对象。
它并不真正相关,但中间件 plicy 看起来像这样:
const { getJwtFromCookies, getJwtFromHeader } = require("../lib/jwt");
const { verifyToken } = require("../lib/jwt");
module.exports = {
name: 'jwt-policy',
policy: (actionParams) => {
return (req, res, next) => {
console.log('test plugin');
const jwt = getJwtFromCookies(req) || getJwtFromHeader(req);
try {
req.user = verifyToken(jwt);
console.log('plugin:', req.user);
} catch (e) {
res.send(401);
}
next() // calling next policy
};
}
};
在 api 网关中,当我没有指定路径时,插件被正确调用。
但是当我用这样的通配符放置路径时它不会被调用(我不想在所有路由上调用插件,我也不想要一个“精确”路径:
user:
apiEndpoints:
- user
policies:
- jwt-policy:
condition: # this action is executed only if path is exactly /v1/auth
name: pathExact
path: '/v1/auth/*'
这个的正确声明是什么/我在文档中哪里可以找到这个?