我要发送检查用户身份验证的请求。
我的请求:
'http://example.com/api/user/signin/check?token=' + token
我在 ngOnInit()
的 app.component.ts
内部发送了一个请求,该请求正常运行。
问题是
app.component.ts
,仅在需要时发送我的请求 在每次路由更改时将此请求发送到服务器
答案 0 :(得分:1)
您可以将Anglar Routing guards与CanActivate保护界面一起使用。
@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
,则会激活您的路线,否则,它将给你一个错误。