我的应用程序分为两部分,一部分是登录,第二部分是仪表板。
要进入仪表板,必须记录。当我进入登录并验证会话时,这工作正常,当我尝试进入仪表板并且我没有记录时,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转到此路由。
此解决方案不是最正确的,但是当从外部链接打开新选项卡时我无法拦截“仪表板”路径而我没有记录。应用程序重定向到登录,当我在登录页面时,拦截器无法获取最后一条路径。