有没有办法让路由守卫只允许来自某个网址的路由?例如,我想要' / url2'只能从/' url1'不是来自任何其他网址或输入' example.com/url2'直接到地址栏。
我能想到的唯一解决方案是使用服务来共享状态,但是我试图让路由保护成为可能,因为我认为如果源URL可以在里面访问它是可行的路线卫士。我面临的唯一问题是我不知道在哪里可以找到路线卫士的源网址。
提前致谢,
答案 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
。