gpt4 book ai didi

javascript - 在 NestJS 中,有没有办法将数据从 Guards 传递到 Controller ?

转载 作者:行者123 更新时间:2023-12-03 07:02:59 25 4
gpt4 key购买 nike

所以我目前在我的组织中广泛使用 NestJS。出于身份验证的目的,我们使用自己的 guard 。所以我的问题是,如果有任何方法可以将数据从 guard 传递到 Controller ,任何人都可以指导我,而不是 response.locals expressjs 的?这是对框架的硬依赖,我现在不希望这样。

TIA。

最佳答案

您可以创建自定义装饰器来获取数据,而不是使用 Guard:

export const Authorization = createParamDecorator((_, request: any) => {
const { authorization: accessToken } = request.headers;
try {
const decoded = jwt.verify(accessToken, process.env.JWT_HASH);
return pick(decoded, 'userId');
} catch (ex) {
throw new InvalidToken();
}
});

export interface AuthUser {
userId: string;
}

并像这样传递给您的 Controller :
  @Post()
createFeedback(
@Body() body: FeedbackBody,
@Authorization() user: AuthUser,
): Promise<Feedback> {
body.userId = user.userId;
return this.feedbackService.feedback(body, user);
}

这可以作为一个守卫,因为当你的 token 无效时,它会抛出一个异常

关于javascript - 在 NestJS 中,有没有办法将数据从 Guards 传递到 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58714466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com