Ich habe ein benutzerdefiniertes NPM-Paket, das Dienstprogramme umfasst, die von verschiedenen mit Nest JS erstellten Mikrodiensten gemeinsam genutzt werden. Das Problem besteht darin, dass, wenn AuthGuard bei einigen Daten aus meinem Paket einen Fehler auslöst, die Nest-Anwendung diesen zwar abfängt, aber nur den Standardfehler auslöst. Ich löse den HttpException-Fehler bei einigen Daten aus und möchte, dass die Nest-Anwendung dieselben Daten als Antwort ausgibt, statt der Standarddaten.
Code:
Der Authentifizierungswächter im Paket ist ein einfacher Wächter, der das Token überprüft und eine Antwort oder einen Fehler zurückgibt
Code: Select all
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,
);
}
}
erhalten
Code: Select all
{
errorDetails:"Token Expired"
}
Code: Select all
{
"statusCode": 500,
"message": "Internal server error"
}
Derselbe Code funktioniert, wenn ich ihn in einer Datei in meiner Anwendung platziere.