2016-09-06 16 views
0

私は数日前に認証ガードを実装しようとしていましたが、まだ私の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.

+0

同じ問題を抱えていますか。この解決策を見つけましたか? – Sujithrao

+0

@Sujithrao Angular 2のどのバージョンを実行していますか?そこにはたくさんのリリースがあり、それらの多くのドキュメント(ブログ投稿、YouTube動画、およびSOの質問の形で)を見つけることができます。 Angular 2.xxを使用していることを確認してください(リリース候補ではありません)。2016年9月15日以前の例を実装せず、[公式角度文書](https://angular.io/docs/ts/latest /) – dslosky

答えて

1

に慣れて誰かのために簡単なものになると確信している、あなたのアプリケーションをアップグレードしてみてくださいあなたは、新しい参照に見えるかもしれ

、可能であればRC6に

Routing & Navigation

また、角度のチームは、コンセプトを紹介Plunkerを作成しました。認証ガードも含まれます。

これが役立ちますように!

+0

おっと!私は2.0.0-beta.17をローカルで使用しています(これはRC6です)、Plunkerを更新して同じことをしました。私はPlunkerの例を簡略化し、それを反映するために私の元の質問を更新します。私の問題は依然として続き、私はそれ以上の洞察に非常に感謝します – dslosky

+0

[2.0.0-beta.17](https://github.com/angular/angular/blob/master/CHANGELOG.md#200) -beta17-2016-04-28)は古いものですが、現在のバージョンはRC6です.Planunkerを確認して、同じ設定を行う方法の答えを追加しました。 –

+0

ああ、あのリンクのおかげで...私は以前にそのPlunkerと仕事をしてきました。私は私の実装が少し異なることがありますので、私のプロジェクトでのノードとNPMを利用することができないんだけど、私はRC6にアップグレードするだろうし、すべてがうまくいけば、あなたは答え:) – dslosky