angular 2 - 如何配置路由守卫只允许来自某些 url 的路由?

angular 2 - how to configure route guard to only allow routes from certain url?

有没有办法让路由守卫只允许来自某些url的路由?例如,我希望只能从 /'url1' 访问“/url2”,而不是从任何其他 url 或直接在地址栏输入 'example.com/url2'。

我能想到的唯一解决方案是使用服务来共享状态,但我试图在路由守卫中实现它,因为我认为如果可以在内部访问源 url 是可行的路线守卫。我面临的唯一问题是我不知道从哪里可以找到路线守卫的来源url。

提前致谢,

我相信你可以通过在 CanActivate 守卫的构造函数中注入 Router 并使用 router.url:

来访问守卫中的当前 Router 路径
export class AuthGuard implements CanActivate {

    constructor(private router: Router) { }

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
        this.router.url  //<-- should be current path, whereas the route: ActivatedRouteSnapshot object should be the requested route
        ...
    }

做任何检查,然后 return booleanObservable<boolean> 来自 canActivate 方法。