У меня проблема с попыткой выяснить, как проверить маршрут сброс пароля , когда пользователь пытается ввести вручную в 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, он позволит им ввести маршрут.
Есть ли способ обнаружить, приходит ли навигация по электронной почте, и проверить на основании этого? Заранее спасибо.