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 boolean
或 Observable<boolean>
来自 canActivate
方法。
有没有办法让路由守卫只允许来自某些url的路由?例如,我希望只能从 /'url1' 访问“/url2”,而不是从任何其他 url 或直接在地址栏输入 'example.com/url2'。
我能想到的唯一解决方案是使用服务来共享状态,但我试图在路由守卫中实现它,因为我认为如果可以在内部访问源 url 是可行的路线守卫。我面临的唯一问题是我不知道从哪里可以找到路线守卫的来源url。
提前致谢,
我相信你可以通过在 CanActivate
守卫的构造函数中注入 Router
并使用 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
...
}
做任何检查,然后 return boolean
或 Observable<boolean>
来自 canActivate
方法。