2016-04-12 19 views
1

Bir İyonik 2 uygulamasında JWT kimlik doğrulamasını ayarlamak için this guide'u takip ediyorum. Şeylerin giriş tarafı kesinlikle çalışıyor, ancak AuthHttp sınıfını kullanmaya çalıştığımda, Chrome'un network sekmesinde veya sunucu tarafında hiçbir şey yapılmıyor ve hiçbir şey gösterilmiyor.Angular2-jwt AuthHttp istekte bulunmuyor

benim app.ts dosyasında aşağıdaki vardır:

import 'es6-shim'; 
import {App, IonicApp, Platform, MenuController} from 'ionic-angular'; 
import {HTTP_PROVIDERS, Http, Headers} from 'angular2/http'; 
import {provide} from 'angular2/core'; 
import {AuthHttp, AuthConfig} from 'angular2-jwt'; 
import {AuthData} from './providers/auth-data'; 
import {UserData} from './providers/user-data'; 


@App({ 
    templateUrl: 'build/app.html', 
    providers: [ 
     HTTP_PROVIDERS, 
     provide(AuthHttp, { 
      useFactory: (http) => { 
       return new AuthHttp(new AuthConfig(), http); 
      }, 
      deps: [Http] 
     }), 
     AuthData, 
     UserData 
    ], 
    config: { 
     apiURL: 'http://localhost:9000' 
    } // http://ionicframework.com/docs/v2/api/config/Config/ 
}) 

ve ardından kullanıcı data.ts içinde bu var:

import {Injectable} from 'angular2/core'; 
import {Http, Headers, RequestOptions} from 'angular2/http'; 
import {Config, Storage, LocalStorage, Events} from 'ionic-angular'; 
import {AuthHttp, JwtHelper, tokenNotExpired} from 'angular2-jwt'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

/** 
* @name UserData 
* @description 
* Provider for any user related data. 
*/ 
@Injectable() 
export class UserData { 

    apiURL: string; 
    contentHeader: Headers = new Headers({'Content-Type': 'application/json'}); 
    error: string; 
    jwtHelper: JwtHelper = new JwtHelper(); 
    local: Storage = new Storage(LocalStorage); 
    storage: any; 
    user: any; 

    constructor(
    public authHttp: AuthHttp, 
    private config: Config, 
    private events: Events, 
    private http: Http 
) { 
    this.apiURL = config.get('apiURL'); 
    let token = this.local.get('id_token')._result; 
    if (token) { 
     this.user = this.jwtHelper.decodeToken(token); 
    } 
    } 

    getUser() { 
    return new Promise(resolve => { 

     this.authHttp.get(this.apiURL+'/api/users/me', { 
     headers: this.contentHeader 
     }) 
     .map(res => res.json()) 
     .subscribe(
     data => { 
      resolve('test'); 
     }, 
     err => { 
      console.log(err); 
     } 
    ); 

    }); 
    } 

} 
nereye gidiyorum

birisi bana söyleyebilir misiniz yanlış ve bir şey özlüyorsam? Angular2-jwt belgelerini çok defa gözden geçirdim ve her şey bana uygun görünüyor.

Yardımlarınız için teşekkür ederiz.

Düzenleme: getUser() işlevi içinde console.log(this.authHttp) yaparsanız

, bu günlüğe aşağıdadır:

AuthHttp {http: Http, _config: Object, tokenStream: Observable} 
+0

updated? – kemsky

+0

Hayır, garip bulduğum hiç hata yok. Ben console.log (this.authHttp) 'i kurabilirim ve kodu da gösterir, bu yüzden kesinlikle ayarlanmıştır. –

+0

Muhtemelen benimkiyle aynı sorunu (https://stackoverflow.com/questions/42343576/no-requests-being-dispatched-while-using-authhttp), ancak anladım ki, benim durumumda eksik belirteç. Varsayılan 'id_token' adını 'belirteç' olarak değiştirdim ve authHttp hizmeti onu bulamadı (authConfig'te açık bir şekilde tanımlanmış olsa bile). Böylece onu değiştirdiğimde her şey çalışmaya başladı. – Alexus

cevap

0

Değil mükemmel bir çözüm, ama İon dan this similar guide onlar 0.1.6 olarak angular2-jwt versiyonunu belirtmek fark ettim. Bu sürüme indirgenmiş ve iyi çalışıyor!

1

Ben başvurunuzun providers özelliğindeki HTTP_PROVIDERS belirtmek için unutmak düşünüyorum:

import {HTTP_PROVIDERS, Http} from 'angular2/http'; 
(...) 

@App({ 
    templateUrl: 'build/app.html', 
    providers: [ 
    HTTP_PROVIDERS, 
    provide(AuthHttp, { 
     useFactory: (http) => { 
      return new AuthHttp(new AuthConfig(), http); 
     }, 
     deps: [Http] 
    }), 
    AuthData, 
    UserData 
    ], 
    config: { 
    apiURL: 'http://localhost:9000' 
    } // http://ionicframework.com/docs/v2/api/config/Config/ 
}) 

Edit

Yalnızca Headers sınıfını içe gerekir:

import {HTTP_PROVIDERS, Http, Headers} from 'angular2/http'; 
+0

Merhaba Thierry, maalesef yine de aynı şeyleri yapıyor –

+0

Aynı zamanda "Headers' class ;-) –

+0

import etmeyi de unutmadınız: @ –

1

Angular2-jwt ile ilgili son güncellemeler, en son İyonik 2 sürümüyle iyi çalışmalıdır. Bu repoyu kontrol edip, senin için uygunsa bana haber verir misin? :) https://github.com/auth0-samples/auth0-ionic2-samples

Düzenleme: Bağlantı konsolda herhangi bir hata var mı

+0

Oradaki yeni kullanıcılara bir link var :) – cienki

+0

Bitti teşekkürler! : D – cienki

İlgili konular