У меня есть собственный пакет NPM, включающий утилиты, совместно используемые различными микросервисами, созданными с помощью Nest JS. Проблема в том, что когда AuthGuard выдает ошибку с некоторыми данными из моего пакета, приложение Nest перехватывает ее, но выдает только ошибку по умолчанию. Я выдаю ошибку HttpException с некоторыми данными и хочу, чтобы приложение Nest выдавало те же данные в качестве ответа, а не по умолчанию.
Код:
Защита аутентификации в пакете — это простая защита, которая проверяет токен и возвращает ответ или ошибку.
Код: Выделить всё
import { CanActivate, ExecutionContext, Injectable, HttpException } from '@nestjs/common';
import { verifyToken } from '../helpers';
@Injectable()
export class AuthGuard implements CanActivate {
constructor() {}
async canActivate(context: ExecutionContext): Promise {
const request = context.switchToHttp().getRequest();
try {
const token = request.headers.authorization?.split(' ')[1];
return await verifyToken(
token,
);
} catch (error) {
console.log('⛈️⛈️⛈️⛈️⛈️⛈️', error);
throw new HttpException(
{
errorDetails: "Token Expired",
},
401,
);
}
}
Код: Выделить всё
{
errorDetails:"Token Expired"
}
Код: Выделить всё
{
"statusCode": 500,
"message": "Internal server error"
}
Тот же код работает, если я помещу его в файл внутри моего приложения.
Подробнее здесь: https://stackoverflow.com/questions/793 ... m-my-custo