const {
accessToken,
refreshToken
} = await this.authService.checkCodeByPhone(dto, responseOptionsDto);
response.cookie('refreshToken', refreshToken, {
httpOnly: true,
maxAge: 3600,
domain: 'localhost',
path: '/auth',
secure: false
});
return {
accessToken: accessToken,
refreshToken: refreshToken,
};
теперь нужно получить данные самого пользователя и поставить гвард на некоторые маршруты, которые требуют авторизации
получения данных только что авторизованного пользователя реализовал вот так
@UseGuards(JwtAuthGuard)
@Get('me')
getAuthUser(
@JwtAuthUser() auth) {
return auth;
}
Правильно ли будет сделать декоратор, в котором по jwt токену делать запрос в базу и получать все его данные и данные из смежных таблиц, если потребуется?
как можно это глобализировать, чтобы в любом месте получать авторизованного пользователя, не плодив в каждом маршруте декораторы и запросы на данные пользователя?
Сам гвард никуда ходить не должен уже тем более делать запросы в базу, он возвращает bolean, если true продолжить если false остановить запрос, для обращение к базе валидации и прочего описывают jwtStrategy и прокидывают её в модуль
Вот мое решение давненькое, может не очень правильно по коду но подход вроде правильный https://gitlab.com/sagro111/myyoka-nest/-/blob/master/src/auth/jwt.strategy.ts
Обсуждают сегодня