首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将自定义参数传递给preHandler

将自定义参数传递给preHandler
EN

Stack Overflow用户
提问于 2022-08-30 08:10:09
回答 1查看 297关注 0票数 0

我只是在学习fastify,我不知道如何实现我想要的:我有这样的路线:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.fastify.get('/ping', {
    preHandler: [
        this.fastify.jwtVerify,
    ],
}, this.configHandler.getConfiguration.bind(this.configHandler));

预处理程序确实会被执行,并包含已知的参数,如请求和回复。

我想将一个自定义参数传递给我的preHandler函数。目前,preHandler正在验证在auth报头中传递的jwt令牌。我想要实现的是将作用域传递给处理程序,而处理程序也可能被检查。

我的preHandler目前是这样注册的插件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const jwtVerifyPlugin: FastifyPluginAsync = async (fastify: FastifyInstance, options: FastifyPluginOptions) => {
    fastify.decorate('jwtVerify', async function (request: FastifyRequest, reply: FastifyReply) {
       //jwtVerficiation happens here
       //scope verification should follow
    })
}

因此,总的来说:我必须在路径的某个地方添加作用域,并且必须将这些作用域放到我的preHandler中的某个位置。

知道我怎么能做到吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-09-09 18:12:16

您可以像这样定义您的装饰功能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const jwtVerifyPlugin: FastifyPluginAsync = async (fastify: FastifyInstance, options: FastifyPluginOptions) => {
    fastify.decorate('jwtVerify', function (options?: { scopes?: string[] }) {
        return async function (request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {
            if (options?.scopes) {
                // access scopes here
            }
            done();
        };
      })
}

然后像这样使用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.fastify.get('/ping', {
    preHandler: [
        this.fastify.jwtVerify({ scopes: ['admin'] }),
    ],
}, this.configHandler.getConfiguration.bind(this.configHandler));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73545471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文