Как я могу удалить мошеннические пути из моей истории сеансов? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть приложение Angular с защитой маршрута на домашнем маршруте.

{
    path: "",
    component: HomeComponent,
    canActivate: [HomeRouteGuard],
}

Охранник проверяет, аутентифицирован ли пользователь, и возвращает true или UrlTree в противном случае.

public canActivate(): Observable<boolean | UrlTree> {
    return this.userService.userIsSignedIn$.pipe(
        map((signedIn) => {
            if (signedIn) {
                return true;
            }
            return this.router.parseUrl("/some-path");
        }),
    );
}

Это направляет пользователя на соответствующую страницу. Проблема возникает, когда они нажимают кнопку «Назад» в браузере. Вместо возврата на предыдущую страницу им снова открывается домашняя страница. Повторное нажатие назад направляет их на нужную страницу.

Навигация инициируется щелчком по тегу привязки с href, установленным на "/".

При отладке взаимодействия я заметил, что когда пользователь нажимает кнопку «Назад» при первом двойном вызове метода canActivate () в HomeRouteGuard. Когда пользователь нажимает кнопку «Назад» во второй раз, HomeRouteGuard вообще не рассматривается (как и ожидалось).

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

Уточнение : двойной возврат происходит, когда охранник маршрута направляет пользователя на другую страницу.

Похоже, это известная проблема. https://github.com/angular/angular/issues/27148

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...