我一直在關注this guide在Ionic 2應用程序中設置JWT身份驗證。事物的登錄方面工作得很好,但是當我嘗試使用AuthHttp類時,沒有發出請求,Chrome的network
選項卡或服務器端沒有任何內容顯示。Angular2-jwt AuthHttp請求未調用
我在app.ts文件中的以下內容:
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/
})
,然後在用戶data.ts我有這樣的:
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);
}
);
});
}
}
有人能告訴我在哪裏,我要去錯了,如果我錯過了什麼?我經歷了很多次angular2-jwt文檔,對我來說一切都很順利。
感謝您的任何幫助。
編輯:
如果我做console.log(this.authHttp)
的getUser()
函數內部,它會記錄以下內容:
AuthHttp {http: Http, _config: Object, tokenStream: Observable}
你有控制檯中的任何錯誤嗎? – kemsky
不,沒有任何錯誤,我覺得很奇怪。我可以'console.log(this.authHttp)'它也顯示代碼,所以它肯定是設置的。 –
可能是我的問題(https://stackoverflow.com/questions/42343576/no-requests-being-dispatched-while-using-authhttp),雖然我設法弄清楚,在我的情況下,這是由於缺少的標記。我已將默認的'id_token'名稱更改爲'token',authHttp服務找不到它(即使我在authConfig中明確定義了它)。所以當我將它改回來時,一切都開始奏效。 – Alexus