私は数日前に認証ガードを実装しようとしていましたが、まだ私のcanActivate
機能を実行することができません。ログインガードを備えた角度2のルータ
import { Injectable } from 'angular2/core';
import { Observable } from "rxjs/Rx";
@Injectable()
export class LoggedInGuard implements CanActivate {
constructor() {}
canActivate():Observable<boolean>|boolean {
console.log('AuthGuard#canActivate called');
return true;
}
}
とガードをインポートし、ルータがどのように見える実装私のアプリのコンポーネント:LoggedInGuard
を
import { Component } from 'angular2/core';
import { HTTP_PROVIDERS } from 'angular2/http';
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router';
import 'rxjs/Rx'; // load the full rxjs
import { CharacterListComponent } from './characters/character-list.component';
import { VehicleListComponent } from './vehicles/vehicle-list.component';
import { LoggedInGuard } from './login.guard.ts'
@Component({
selector: 'story-app',
templateUrl: 'app/app.component.html',
directives: [ROUTER_DIRECTIVES],
providers: [
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
LoggedInGuard
]
})
@RouteConfig([
{ path: '/characters', name: 'Characters', component: CharacterListComponent, useAsDefault: true },
{ path: '/vehicles', name: 'Vehicles', component: VehicleListComponent, canActivate: [LoggedInGuard] }
])
export class AppComponent { }
たびに私の認証ガードは、この(明らかに実際には何も守っていないされている)ように見えますのcanActivate
機能が実行されると、ログエントリが作成されます。リンク間を移動するときは、決してログエントリは作成されません。つまり、関数は決して実行されません。あなたは、アクションhereのプランカを見ることができます。
任意の洞察力をいただければ幸いです...私は、これはあなたが角度2の方法古いバージョンを使用しているアンギュラ2.
同じ問題を抱えていますか。この解決策を見つけましたか? – Sujithrao
@Sujithrao Angular 2のどのバージョンを実行していますか?そこにはたくさんのリリースがあり、それらの多くのドキュメント(ブログ投稿、YouTube動画、およびSOの質問の形で)を見つけることができます。 Angular 2.xxを使用していることを確認してください(リリース候補ではありません)。2016年9月15日以前の例を実装せず、[公式角度文書](https://angular.io/docs/ts/latest /) – dslosky