Подавление входа в систему и обработка его в коде angular / spring-boot - PullRequest
0 голосов
/ 06 марта 2019

У меня есть угловой проект пользовательского интерфейса, и я упаковываю его в основное приложение в папке 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')
                }
            }
        }));
    }

}
...