如何在Router Guard中检测直接URL导航?

时间:2017-12-13 08:47:08

标签: angular

我有一名警卫保护一些路线。

如果用户无法访问指定路线,警卫应执行以下操作:

    如果在Angular应用程序(routerLink)内进行导航,则
  • 不执行任何操作
  • 如果是标准浏览器导航(导致Angular初始化),则导航到主页

我应该检查什么才能知道要选择哪条执行路径?

1 个答案:

答案 0 :(得分:0)

查看此链接https://v2.angular.io/docs/ts/latest/guide/router.html#!#query-parameters 。在您的authGuard实施中,您可以获取当前网址,并使用RouterStateSnapshot模块中的ActivatedRouteSnapshot'@angular/router'进行检查。要知道用户是否已经在Angular中,您可以使用此APP_INITIALIZER。这是一个在初始化应用程序时执行的函数。这是一个实现How to call an rest api while bootstrapping angular 2 app。想法是使用sessionStorage存储用户是否来自Angular之外。然后在您的AuthGuard中,您可以检查sessionStorage中的值(一旦页面被销毁就会被销毁。确保您仍然可以使用。