JHipster-Angular 5: использование сервиса из другого модуля заканчивается кодом состояния: 401 не авторизован - PullRequest
0 голосов
/ 13 мая 2018

Я пытался повторно использовать существующую (сгенерированную) службу для одного из объектов из другого функционального модуля с отложенной загрузкой.

Я просто импортировал модуль, содержащий сервис, в функциональный модуль. например,

@NgModule({ 
    imports: [ 
        Module1,
        Module2,
        ServiceModule 
    ]
})

В ServiceModule есть следующее:

@NgModule({
    providers: [
        MyService
    ]
})

Но при введении MyService в компонент внутри моего LazyLoadedModule использование одного из его методов дает мне код состояния: 401 не авторизован. Используемый метод аутентификации - токены JWT, которые обрабатываются кодом по умолчанию JHipster, сохраняя их в браузере. Служба выполняет простой вызов всех запросов к внутреннему API, который я тестировал с почтальоном, и работает нормально.

Все это не произойдет, если я использую службу в лениво загруженном модуле. Есть идеи, чего здесь не хватает?

1 Ответ

0 голосов
/ 14 мая 2018

Причиной этой проблемы было отсутствие http-перехватчиков в функциональном модуле . Http-перехватчики, о которых я говорю, те же, что и в app.module . Итак, что было исправлено, так это скопировать и вставить следующий код из app.module.ts в feature.moduele.ts

providers: [ 
        { 
            provide: HTTP_INTERCEPTORS, 
            useClass: AuthInterceptor, 
            multi: true, 
            deps: [ 
                LocalStorageService, 
                SessionStorageService 
            ] 
        }, 
        { 
            provide: HTTP_INTERCEPTORS, 
            useClass: AuthExpiredInterceptor, 
            multi: true, 
            deps: [ 
                Injector 
            ] 
        }, 
        { 
            provide: HTTP_INTERCEPTORS, 
            useClass: ErrorHandlerInterceptor, 
            multi: true, 
            deps: [ 
                JhiEventManager 
            ] 
        }, 
        { 
            provide: HTTP_INTERCEPTORS, 
            useClass: NotificationInterceptor, 
            multi: true, 
            deps: [ 
                Injector 
            ] 
        }
    ] 
...