Intenta comprender el código correctamente antes de adaptarlo a tu proyecto y si ttienes algo que aportar puedes comentarlo.
Solución:
No es posible inyectar un servicio en su decorador personalizado.
En su lugar, puede crear un AuthGuard
que tiene acceso a su servicio. El guardia puede entonces agregar una propiedad al request
objeto, al que luego puede acceder con su decorador personalizado:
@Injectable()
export class AuthGuard implements CanActivate
constructor(private authService: AuthService)
async canActivate(context: ExecutionContext): Promise
const request = context.switchToHttp().getRequest();
const bearerToken = req.header.Authorization;
const user = await this.authService.authenticate(bearerToken);
request.principal = user;
// If you want to allow the request even if auth fails, always return true
return !!user;
import createParamDecorator from '@nestjs/common';
export const Principal = createParamDecorator((data: string, req) =>
return req.principal;
);
y luego en su controlador:
@Get()
@UseGuards(AuthGuard)
get(@Principal() principal: Principal)
// ...
Tenga en cuenta que nest ofrece algunos módulos estándar para la autenticación, consulte los documentos.
Si eres capaz, tienes la opción de dejar un enunciado acerca de qué le añadirías a este enunciado.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)