Как перехватить запрос рукопожатия, отправленный SockJS - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь создать сокет-соединение между угловым клиентом и сервером весенней загрузки.

const ws = new SockJS(this.addressStorage.apiAddress + '/socket', null, {
  sessionId: function (): string {
    return that.authManager.playerId + ':' + lobbyName + ':' + uuid();
  }
});

После создания экземпляра SockJS клиент отправляет запрос на мой сервер.screen of console, showing handshake request

Поскольку я включил WebSecurity на сервере, мне нужно авторизовать каждый запрос, включая рукопожатие sockjs.Таким образом, при создании SockJS появляется это окно:

screen showing google's chrome login prompt

Я не хочу, чтобы пользователь снова вводил свой логин и пароль, когда клиент создает соединение через сокет ссервер.К сожалению, невозможно добавить заголовок авторизации с помощью SockJS, поэтому я решил использовать перехватчик.

Этот перехватчик не перехватывает рукопожатие SockJS:

export class SocketInterceptorService implements HttpInterceptor {

  constructor(private authManager: AuthManagerService) {
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log(req.url);
    console.log(req);
    // req = req.clone({
    //   setHeaders: {
    //     Authorization: this.authManager.basicToken
    //   }
    // });
    return next.handle(req);
  }
} 

Так как я могу перехватить рукопожатие SockJS, чтобыавтоматически авторизовать соединение SockJS?

...