My Ionic 2 앱에 로그인되어 있고 로컬 토큰에 인증 토큰을 저장합니다. 그런 다음이 토큰을 HTTP 요청에 사용하려고합니다. 내 인증 서비스에서Ionic 2의 HTTP 요청에서 로컬 저장소의 토큰 사용
나는 다음과 같은 방법이 있습니다
export class Rides {
token: string;
constructor(public http: Http, public authentification: Authentification) {
this.authentification.authToken().then((val) => {
this.token = val;
console.log(this.token);
});
}
getOpenRides() {
var headers = new Headers();
headers.append('Authorization', 'Token token=' + this.token);
return this.http.get('URL', { headers: headers })
.map(res => res.json());
}
}
그것은 내 놀이기구 서비스에 올바른 토큰을 기록합니다 내가 가지고있는 HTTP 요청을 만들어 내 서비스
authToken() {
return this.storage.get('auth_token').then((val) => {
return val;
});
}
그리고 다음을 건설자. 하지만 HTTP 요청에서 토큰을 사용할 때 내 서버에서 token = undefined가 전송되었다고 말합니다.
어떻게해야합니까? ,
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { Rides } from '../../providers/rides';
/*
Generated class for the Agenda page.
See http://ionicframework.com/docs/v2/components/#navigation for more info on
Ionic pages and navigation.
*/
@Component({
selector: 'page-agenda',
templateUrl: 'agenda.html',
providers: [Rides]
})
export class AgendaPage {
openRides: any;
constructor(public navCtrl: NavController, public navParams: NavParams, public rides: Rides) {}
ionViewDidLoad() {
this.openRides = this.rides.getOpenRides()
.subscribe(response => { console.log(response.rides) });
}
}
언제 어디서'getOpenRides' 함수를 호출합니까? – Alex
오픈 라이드를 표시하고 싶은 페이지 구성 요소에서이를 호출합니다. 나는 내 질문에 그것을 추가했습니다. – almo
흠, 다른 구성 요소에 인증 토큰을 설정했다고 가정합니까? 이 경우 문제는 구성 요소의 '제공자 : [Rides]'에 있어야합니다. 구성 요소의 공급자를 선언하면 서비스의 새로운 인스턴스이므로 다른 구성 요소 및 서비스에서 설정 한 속성에 액세스 할 수 없습니다. 대신 ngModule에'Providers : [Rides, AuthService]'를 추가하고 구성 요소에서 단일 공급자를 제거하십시오. 즉, 해당 모듈의 모든 구성 요소는 ** 동일한 ** 서비스를 사용하며 다른 구성 요소에서 설정된 변수에 액세스 할 수 있습니다. – Alex