首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在密码重置路径上实现角度保护

在密码重置路径上实现角度保护
EN

Stack Overflow用户
提问于 2020-02-05 00:14:49
回答 1查看 1.1K关注 0票数 1

当用户尝试在password-reset中手动输入时,我遇到了一个问题,试图弄清楚如何验证这个URL路由。正确的功能是用户将进入forgot-password路由,并从那里向他们发送电子邮件;电子邮件将包含指向password-reset路由的URL,并包含令牌。我的最佳解决方法是为password-reset路由创建一个特定的保护机制,并且我正在验证令牌是否作为查询参数在URL中传递;下面是代码:

代码语言:javascript
复制
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中写入令牌,它将允许他们进入路由。

是否有一种方法可以检测导航是否来自电子邮件并基于此进行验证?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-05 00:30:48

我们过去这样做的方法之一就是编辑我的评论。

点击forgot-password链接后,将

  1. 发送到服务器。
  2. Server生成令牌,存储它,email.
  3. Route password-reset的
  4. 用户单击
  5. ,询问服务器令牌是否有效。如果是->服务器发出临时cookie响应,您将使用临时cookie来验证下一个action/actions
  6. If,没有路由保护将用户发送到应用程序中未经身份验证的通用错误页面。

这能回答你的问题吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60067339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档