Route Resolve Guard

2018-10-19  本文已影响12人  柳源居士

当遇到以下场景时,需要考虑使用路由守卫:

守卫可以同步返回一个值,用来控制是否通行

当时异步操作的时候,守卫可以返回:
Observable<boolean> 或者 Promise<boolean>,并且路由器(Router)会等待这个可观察对象被解析为true 或者false。

路由器可以支持多种守卫接口

在分层路由的每个级别上,你都可以设置多个守卫。

可以对已认证的用户或者具有特殊授权的用户访问某些路由,可以使用canActivate守卫。

使用CanActivate路由:
建立一个服务,继承CanActivate类,重写canActivate()方法。

import { Injectable }     from '@angular/core';
import { CanActivate }    from '@angular/router';

@Injectable()
export class AuthGuard implements CanActivate {
//inject service here
constructor()  {
}

  canActivate() {
    console.log('AuthGuard#canActivate called');
    return true;
  }
}

完成后,在路由配置里面添加:

canActivate:[AuthGuard]

其他守卫实现方法类似,只是作用的时间段不同。

上一篇 下一篇

猜你喜欢

热点阅读