как получить доступ к микросервису request.user nest js? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть настройка микросервиса с шлюзом api, принимающим HTTP-запросы и передающим их разным сервисам (медиа-сервис, платежный сервис и т. Д. c.) С использованием шаблона сообщения. .user в api-gateway, который дает мне аутентифицированного пользователя из декодированного jwt. Я бы хотел передать это в микросервис мультимедиа и получить к нему доступ в рамках функций службы мультимедиа.

Как мне этого добиться?

контроллер в API-шлюзе

export class MediasController {
    constructor(@Inject('MEDIA_SERVICE') private client: ClientProxy) { }

    @Get()
    @UseGuards(AuthGuard('jwt'))
    async find(@Query() query: QueryArgs): Promise<any> {
        const pattern = { cmd: 'media-find' };
        return await this.client.send<any>(pattern, query)
    }
}

контроллер и служба в медиа-микросервисе

medias.controller.ts
@Controller({ path: 'medias', scope: Scope.REQUEST })
export class MediasController {
    constructor(private readonly mediasService: MediasService) { }
    
    @MessagePattern({ cmd: 'media-find' })
    async find(query: any): Promise<any> {
        return await this.mediasService.find(query)
    }
}
medias.service.ts
export class MediasService {
    constructor(@InjectRepository(Media) private readonly mediaRepository: Repository<Media>) {
    }

    async find(query): Promise<Media[]> {
        // access request.user here 
        return await this.mediaRepository.find(query);
    }
}
...