我正在使用 Asp.NET Web API 2 处理 angular 4 项目。我想在用户进入管理部分之前检查用户是否已获得授权。我试图在角度的路由中设置解析器,如下所示:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.profile.getProfile()
.map(result => { setAuthorized(); return result;})
.catch(res => { return Observable.of(new Profile()); });
}
setAuthorized() 函数将在全局变量中设置授权,以便可以使用函数 isAuthorized() 和授权保护来检查它:
if (this.route.firstChild != null) {
return this.route.firstChild.data.map( res => {
if (isAuthorized()) {
return true;
}
});
} else {
return Observable.of(false);
}
路由是:
const routes: Routes =
[
{path: ':lang', component: LanguageComponent,
children: [
{ path: 'dashboard', component: DashboardComponent, resolve: { authority: AuthorityResolverService} },
{ path: 'admin', component: AdminComponent, canActivate: [AuthorizedGuard], resolve: { authority: AuthorityResolverService}},
]}
];
一切似乎都正常工作。但问题是当我单击 F5 或复制 URL 并在新窗口中打开它时,我总是会被重定向到错误页面。当我监控工作流时,它显示当我尝试直接访问 URL 时它没有调用解析器:
本地主机/管理员
我没有收到任何错误,但我总是被重定向。有任何想法吗?