2016-07-03 4 views
0

CanActivate (각도 문서)를 시도했으며 올바르게 작동합니다. 필요한 보안이 필요한 모든 경로에이를 추가해야하므로 라우트가 만들어지기 전에 RouterOutlet을 확장하고 인증을 확인하려고했습니다.인증을 위해 각도 2 RC 4의 RouterOutlet을 확장하는 방법

import {Directive, ViewContainerRef, ComponentFactoryResolver, ResolvedReflectiveProvider} from '@angular/core'; 
import {Router} from '@angular/router/src/router'; 
import {RouterOutletMap} from '@angular/router/src/router_outlet_map'; 
import {RouterOutlet} from '@angular/router/src/directives/router_outlet'; 
import {ActivatedRoute} from '@angular/router/src/router_state'; 

@Directive({ 
    selector: 'router-outlet' 
}) 

export class SecuredRouterOutlet extends RouterOutlet { 

    constructor(outletMap: RouterOutletMap, 
       location: ViewContainerRef, 
       componentFactoryResolver: ComponentFactoryResolver, 
       name: string) { 

     super(outletMap, location, componentFactoryResolver, name); 
    } 

    activate(activatedRoute: ActivatedRoute, providers: ResolvedReflectiveProvider[], outletMap: RouterOutletMap) { 
      /* TODO : Check for authentication */ 
      return super.activate(activatedRoute, providers, outletMap); 
    } 
} 

나는 제공된 매개 변수가 호출 대상의 서명과 일치하지 않는 오류를 얻을.은 생성자의 super() 메서드에 사용됩니다. 이 방법은 RouterOutlet을 확장하는 적절한 방법입니까? 도와주세요 .. 고마워요

답변

0

RC4에서는 RouterOutlet을 구현하는 대신 CanActivate 클래스를 구현하는 것이 좋습니다.

각도 2 설명서의 this link을 참조하십시오.

사용자가 허용되는지 아닌지에 대한 부울을 반환하고 그 클래스에 대한 참조를 경로에 넣으면됩니다 (새 구성 요소 라우터를 사용한다고 가정).