身份验证策略验证了用户身份以后,会在请求里面包含当前用户相关的数据,下面我们可以定义一个参数装饰器,用它提取在请求里的 user 这个属性的值。
新建一个装饰器,放在 auth/decorators 里面,名字是 current-user.decorator.ts ,在这个文件里导出一个装饰器,名字是 CurrentUser,它的值可以用一下 createParamDecorator ,提供一个方法,第一个参数暂时用不到,第二个参数是 context,它的类型是 ExecutionContext ,在这个方法里声明一个 request,它的值用一下 context.switchToHttp,然后调用 getRequest,获取到请求,最后可以返回 request 里面的 user 。
下面可以用一下这个参数装饰器,打开 auth.controller,在这个 login 方法里面,用一下 CurrentUser 装饰器,把得到的用户交给 user ,类型可以设置成 UserEntity,最后让这个方法返回这个 user 参数的值。
测试
在 Http 客户端测试一下,发送一下这个用户登录请求,通过验证以后,会响应回来当前这个用户相关的数据。