我的应用程序分为两部分,一部分是登录,第二部分是仪表板 .

要进入仪表板,必须记录 . 当我进入登录并验证会话时,这工作正常,当我尝试进入仪表板并且我没有记录时,AuthGuard抛出我将此路由保存到CustomService中以便登录时,应用程序重定向到路由你有权限 .

但问题是,当我点击我的应用程序的一个链接进入仪表板并且我没有经过身份验证时,AuthGuard工作正常,因为这让我感动,但AuthGuard没有保存重定向的URL . 仅当单击链接打开选项卡时才会出现此情况...

我按照这个例子来做AuthGuard:Angular2 - Redirect to calling url after successful login

有人可以帮帮我吗?

谢谢


解:

解决方案是废话(抱歉表达),但这是有效的 .

在我的AppModule中,我本地检查路由,如果此路由包含仪表板前缀,在我的情况下为'dash',我从不保存重定向路由,我在AuthGuardService中保存路由 .

export class AppModule {
if(window.location.href.indexOf("dash") != -1 && authGuardService.redirect === null){
      authGuardService.redirect = window.location.hash.split('#')[1];
    }
}

现在,当我登录到App时,我在AuthGuardService中有重定向路由,然后从LoginComponent转到此路由 .

这个解决方案不是最正确的,但是当我从外部链接打开一个新选项卡时我无法拦截“仪表板”路径而且我没有记录 . 应用程序重定向到登录,当我在登录页面时,拦截器无法获取最后一条路线 .