如何在控制器上下文之外访问经过身份验证的用户

时间:2019-08-14 17:53:20

标签: node.js nestjs

在遵循Nest.js身份验证指南(https://docs.nestjs.com/techniques/authentication)时,我对登录用户的访问有疑问。我使用mongoose作为数据库驱动程序,所有数据都保存到MongoDB(以及用户数据)中。我想在数据库中保存或更新的每个文档上都具有“ createdBy”和“ updatedBy”字段。

这可以通过在定义架构时在schema.pre('save',function(){})回调期间添加它们来完成。但是我无法访问执行保存操作的当前用户。请求通过jwt auth保护后,当前登录的用户将保存在请求中。

如何在schema.pre('save')回调点锁定该用户?

1 个答案:

答案 0 :(得分:0)

您可以创建一个新的用户装饰器来完成所需的工作。

import { createParamDecorator } from '@nestjs/common';

export const User = createParamDecorator((data, req) => req.user);

然后在控制器中,您可以像下面的参数一样使用它

@Get()
  async getAll(@User() user: UserModel): Promise<Client[]> {
    return this.clientService.getAll(user._id);
  }