【发布时间】:2021-11-17 20:46:45
【问题描述】:
我在 NestJs 中创建了一个身份验证中间件,如下所示:
@Injectable()
export class AuthenticationMiddleware implements NestMiddleware {
constructor() {}
async use(req: any, res: any, next: () => void) {
const authHeaders = req.headers.authorization;
if (authHeaders) {
//some logic etc.
//req.user = user;
next();
} else {
throw new UnathorizedException();
}
}
}
...我从标头中获取 - 一个身份验证令牌,对其进行解码并检查该用户是否正确并存在于数据库中,如果他存在,那么我将 user 对象设置为 req.user。现在我有一个问题,如何在我的服务中获取这个req.user 并在业务逻辑中使用?我需要从req.user 获取 id,但我不知道如何。
我知道我可以通过在控制器参数中使用@Req() request 来做到这一点,并将这个request 传递到我的函数中,但我不想要它,因为(对我来说)这是一种丑陋的做法。那么,如何让这个req.user 进入我的服务?
感谢您的帮助!
【问题讨论】:
-
好问题。这就是使用装饰器的原因。看看我的回答。
标签: javascript node.js typescript request nestjs