У меня есть угловой проект пользовательского интерфейса, и я упаковываю его в основное приложение в папке resources/static
. Я могу получить доступ ко всем пользовательским интерфейсам, и я могу выполнять все операции после входа в систему в комплекте службы.
Стартовая страница для моего приложения https://localhost/index.html
. Домашний компонент углового проекта имеет вызов для /rest/user
, который требует входа в систему, и в моем перехватчике у меня есть проверка для 404 и перенаправление на страницу входа в систему, а также у меня установлен X-Requested-With
вместе с каждым последующим запросом.
Когда я запускаю npm start
в проекте angular ui, все работает. Но когда я связываю его и запускаю, появляется одно всплывающее окно для входа в систему в первый раз. На самом деле я хотел войти на моей странице компонента пользовательского входа. Как я могу избежать этого всплывающего окна?
код перехватчика:
import { Injectable, NgZone } from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpRequest, HttpHandler, HttpErrorResponse, HttpResponse} from '@angular/common/http';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import {Router} from "@angular/router";
@Injectable({
providedIn: 'root'
})
export class InterceptorService implements HttpInterceptor {
constructor(private ngZone: NgZone, private router: Router) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const xhr = request.clone({
headers: request.headers.set('X-Requested-With', 'XMLHttpRequest')
});
//return next.handle(xhr);
return next.handle(xhr).pipe(tap((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
// do stuff with response if you want
}
}, (err: any) => {
if (err instanceof HttpErrorResponse) {
if (err.status === 401) {
this.ngZone.run(() => this.router.navigateByUrl('login')).then();
//this.router.navigateByUrl('login')
}
}
}));
}
}