Ваш JwtStrategy
имеет метод validate
.Здесь у вас есть доступ к JwtPayload
.Возвращаемое значение этого метода будет прикреплено к запросу (по умолчанию в свойстве user
).Таким образом, вы можете вернуть все, что вам нужно, из полезной нагрузки здесь:
async validate(payload: JwtPayload) {
const user = await this.authService.validateUser(payload);
if (!user) {
throw new UnauthorizedException();
}
return {user, email: payload.email};
}
, а затем получить к нему доступ в вашем контроллере, введя запрос:
@Post()
@UseGuards(AuthGuard())
async create(@Req() request) {
Logger.log(req.user.email);
}
Вы можете сделать это более удобным, создавпользовательский декоратор:
import { createParamDecorator } from '@nestjs/common';
export const User = createParamDecorator((data, req) => {
return req.user;
});
и затем введите @User
вместо @Req
.