如何在每个角度路线中发送要求

时间:2019-03-21 12:11:45

标签: angular

我要发送检查用户身份验证的请求。

我的请求:

'http://example.com/api/user/signin/check?token=' + token

我在 ngOnInit() app.component.ts 内部发送了一个请求,该请求正常运行。

  

问题是 app.component.ts ,仅在需要时发送我的请求   在每次路由更改时将此请求发送到服务器

1 个答案:

答案 0 :(得分:1)

您可以将Anglar Routing guardsCanActivate保护界面一起使用。

@Injectable()
export class CheckAuthenticationGuard implements CanActivate {
  constructor(/* Inject whatever you want here */) {}

  public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree {
    // Make request and return if you are authenticated or not.
  }
}

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: 'home/',
        component: HomeComponent,
        canActivate: [CheckAuthenticationGuard]
      },
      {
        path: 'otherRoute',
        component: OtherComponent,
        canActivate: [CheckAuthenticationGuard]
      },
      ...
    ])
  ],
  providers: [
    ...,
    CheckAuthenticationGuard 
  ]
})
class AppModule {}

每次您导航到定义的路线之一时,它将执行CheckAuthenticationGuard,并且如果您的canActivate方法返回true,则会激活您的路线,否则,它将给你一个错误。