Реализовать Angular охрану на маршруте сброса пароля - PullRequest
0 голосов
/ 05 февраля 2020

У меня проблема с попыткой выяснить, как проверить маршрут сброс пароля , когда пользователь пытается ввести вручную в URL. Правильная функциональность заключается в том, что пользователи будут go маршрут забытый пароль , и оттуда им будет отправлено электронное письмо; электронное письмо будет содержать URL-адрес, указывающий на маршрут сброс пароля , и будет содержать токен. Мой неэффективный обходной путь - создание спецификации защиты c для маршрута сброс пароля , и я проверяю, передан ли токен в URL-адресе в качестве параметра запроса; вот код:

canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
if (Object.keys(next.queryParams).includes('token')) {
  return true;
}
this.router.navigate(['/login']);
return false;

}

Как видите, у этого кода есть неудобство: если пользователи запишут токен в URL, он позволит им ввести маршрут.

Есть ли способ обнаружить, приходит ли навигация по электронной почте, и проверить на основании этого? Заранее спасибо.

1 Ответ

0 голосов
/ 05 февраля 2020

Один из способов, которым мы делали это в прошлом, был - Редактирование моего комментария

  1. Как только забыли пароль Ссылка нажата, отправьте сообщение на сервер.
  2. Сервер генерирует токен, Сохраняет его, Отправляет как ссылку (URL-адрес указан)
  3. Пользователь нажимает ссылку в сообщении электронной почты.
  4. Route Guard из сброс пароля запрашивает у сервера, является ли токен действительным.
  5. Если Да -> Сервер выдаёт ответ с временным поваром ie, который вы будете использовать для проверки следующее действие / действия
  6. Если No Route Guard отправит пользователя на общую страницу ошибки c в неаутентифицированной области приложения.

Будет ли это четко ответить на ваш вопрос

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