私はログイン後にトークンの値を得ることができます。なぜなら、関数からユーザー名とパスワードの値を渡しているからです。次のページで、私はそれらの値を渡すつもりはありません。なぜ私がヌルになっているのかはわかります。その値を取得する最も効率的な方法は、ユーザー名とパスワードをページからページに渡し、その関数を呼び出すことです。トークンの値はNullを返し、トークンの値は取得しません。 Angular 4.3 Ionic 2+
Auth.ts
login(userName: string, password: string, route: string = null): any {
this.logout(false);
this.doLogin(userName, password)
.subscribe(response => {
let token:string = JSON.stringify(response.access_token);
this.storage.set('token', token);
console.log(token, 'this is the token here')
});
}
getToken(){
this.storage.get('token').then((val) => {
this.accessToken = val;
})
if(this.accessToken == undefined || this.accessToken == null){
return '0'
}
else{
return "Bearer " + this.accessToken.replace(/["]+/g, '')
}
}
component.ts
login(){
this.authService.login(this.account.username, this.account.password)
}
Interceptor.ts
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let access = this.auth.getToken()
const authReq = req.clone({
setHeaders: {
Authorization: access
}
});
return next.handle(authReq)
}
ありがとう!
調整中にこのエラーが発生しました。 - エラーTypeError:未定義のプロパティ 'length'を読み取ることができません。また、getToken()を変更する必要がありました:any {} << ----- – userlkjsflkdsvm
スニペットを答えからコピー/貼り付けても、あなたのコードは魔法のように動作しません。あなたが持っていた問題を理解し、残りのコードで同じテクニックを適用すると、同様のエラーが発生する可能性があります。 '.length'は上記のコードにも現れません。 –
ヘルプをよろしく!私はエラーを取得しています。TypeError:未定義の 'then'プロパティを読み取ることができません。ユーザーは資格情報を入力していないため、トークンは未定義です。ユーザーが資格情報を入力したときにのみこの関数が呼び出されるようにするにはどうすればよいでしょうか。 – userlkjsflkdsvm