2017-04-12 25 views
2

有沒有辦法讓路線警衛只允許來自特定網址的路線?例如,我希望'/ url2'只能從/'url1'訪問,而不能從任何其他網址訪問,或直接在地址欄中輸入'example.com/url2'。角2 - 如何配置路由守衛只允許來自特定網址的路由?

我能想到的唯一解決方案就是使用服務來共享狀態,但我試圖讓它成爲可能,因爲我認爲如果可以在內部路由守護程序中訪問源URL,這是可行的。我面臨的唯一問題是,我不知道從哪裏可以找到來自路由守衛的源URL。

由於提前,

回答

3

我相信你可以通過在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 
     ... 
    } 

什麼就做什麼檢查,然後從canActivate方法返回booleanObservable<boolean>