angular 2 - 如何配置路由保护仅允许来自某个URL的路由?

时间:2017-04-12 13:11:39

标签: angular angular2-routing

有没有办法让路由守卫只允许来自某个网​​址的路由?例如,我想要' / url2'只能从/' url1'不是来自任何其他网址或输入' example.com/url2'直接到地址栏。

我能想到的唯一解决方案是使用服务来共享状态,但是我试图让路由保护成为可能,因为我认为如果源URL可以在里面访问它是可行的路线卫士。我面临的唯一问题是我不知道在哪里可以找到路线卫士的源网址。

提前致谢,

1 个答案:

答案 0 :(得分:4)

我相信您可以通过在Router后卫的构造函数中注入CanActivate并使用router.url来访问警卫中的当前路径器路径:

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
        ...
    }

执行任何检查,然后从boolean方法返回Observable<boolean>canActivate