Angular & RxJS: как инициализировать AuthGuard? - PullRequest
0 голосов
/ 10 июня 2018

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

В частности, у меня есть private loggedIn: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null); переменная, которую я могу использовать во всем приложении, чтобы узнать, вошел ли пользователь в систему или нет.

Однако в приведенном выше коде выполненный тест является тривиальным (пользователь и пароль не пусты), и я 'Я хотел бы выполнить аутентификацию на сервере, но у меня возникла проблема: как я могу сделать так, чтобы метод canActivate из AuthGuard ожидал асинхронное значение, возвращаемое http.post ()?Я видел, что canActivate может возвращать Observable, но я не мог заставить его работать с переменной loggedIn.

1 Ответ

0 голосов
/ 10 июня 2018

Вы ответили на свой вопрос.Возвращаемое значение метода canActivate может быть Observable<boolean>, Promise<boolean> или boolean.Ваше свойство loggedIn не является ни одним из них.Вместо этого вы должны сделать так, чтобы canActivate вызывал сервис, который, в свою очередь, будет отправлять http-запрос вашему бэкэнду, и он будет возвращать Observable, который вы затем сможете отобразить в ответе на логическое значение.

...