【发布时间】:2020-12-09 17:38:54
【问题描述】:
在我们的应用程序中,我们通过 ?token=[TOKEN] 查询参数为用户设置恢复过程。 设置新密码的链接指向项目的主页,如下所示:
https://our-project.com?token=[TOKEN]
在应用程序加载过程中,有一个 RedirectRoleGuardService,它只是检查用户是否 经过身份验证,如果是,则将用户重定向到特定路线。代码如下:
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.store.pipe(
select(fromAuth.selectRole),
tap((role) => {
if (role)
this.router.navigate([state.url + '-' + role], { queryParamsHandling: 'preserve' }).then()
else
this.router.navigate(['/main-unauth'], { queryParamsHandling: 'preserve' })
.then()
}),
take(1),
map(() => true)
)
}
如您所见,我尝试使用 queryParamsHandling,但效果为零。 QueryParams 根本不保存。
期望的行为: 我希望能够在页面加载期间捕获 queryParams。 URL:https://our-project.com?token=[TOKEN],我想捕获带有值的 ?token 并将其传递给由 RedirectRoleGuardService 重定向的 url
【问题讨论】: