当用户尝试在password-reset中手动输入时,我遇到了一个问题,试图弄清楚如何验证这个URL路由。正确的功能是用户将进入forgot-password路由,并从那里向他们发送电子邮件;电子邮件将包含指向password-reset路由的URL,并包含令牌。我的最佳解决方法是为password-reset路由创建一个特定的保护机制,并且我正在验证令牌是否作为查询参数在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中写入令牌,它将允许他们进入路由。
是否有一种方法可以检测导航是否来自电子邮件并基于此进行验证?提前谢谢。
发布于 2020-02-05 00:30:48
我们过去这样做的方法之一就是编辑我的评论。
点击forgot-password链接后,将
这能回答你的问题吗?
https://stackoverflow.com/questions/60067339
复制相似问题