저는 Angp 4 Web Project 2에서 작동 중입니다. 관리자 섹션에 들어가기 전에 권한이 부여되었는지 확인하고 싶습니다.ASP.NET WebAPI 2에서 angular4로 가드를 가진 리졸버
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에 도달하려고 리졸버 호출하지 않았 음을 보여줍니다
로컬 호스트/관리자 나 오류가 수신되지 않는 경우
을하지만, 나는 항상 리디렉션됩니다. 어떤 아이디어?
오, 맞습니다. 나는 resolver를 지우고 Gaurd 내부의 코드를 복사하고 Observable of boolean을 반환했다. 나는 또한 Guard에서 인증을했다. 굉장해, 고마워! –