2017-12-06 22 views
0

私は、JWTの承認をしたと私はセッションストレージにそのトークンを格納しますが、私は、文字列の中にそのトークンを取得し、私はnullを取得し、それをログに記録しようとすると、これはそれが簡単なのgetItemメソッドであるべき機能セッション記憶域からjwtトークンを変数に保存する方法は?

login(user : User): void 
    { 
    this.header= new Headers({"content-Type": "application/json"}); 
    this.osobaService.create(user,this.tokenUrl,this.header).then(p=> {sessionStorage.setItem("Token",p._body.slice(1,-1))}); 
    this.tokenString = sessionStorage.getItem("Token"); 
    console.log(this.tokenString); 
    } 

ですが、私はnullになっています。

+0

どのオブジェクトがpですか?この値をここに記録してください:.then(p => {console.log( "Token:"、p._body.slice(1、-1)); sessionStorage.setItem( "Token"、p._body.slice( " 1、-1))}) これは、エラーを検索するためのヒントを提供します。 – Joniras

+0

はあなたの 'osobaService'コールバックですか、それとも解決機能がありますか? –

答えて

2

'this.osobaService.create'は非同期関数です。あなたはそれを書く前に値を記録しようとしています。このようにコードを変更すると、正しい値が記録されるはずです。

login(user : User): void 
    { 
    this.header= new Headers({"content-Type": "application/json"}); 
    this.osobaService.create(user,this.tokenUrl,this.header) 
     .then(p=> { 
      sessionStorage.setItem("Token",p._body.slice(1,-1)) 
      this.tokenString = sessionStorage.getItem("Token"); 
      console.log(this.tokenString); 
     }); 
    } 
+0

非同期であることを指摘してくれてありがとう、私は応答のためにw8する必要があることを理解しました。乾杯 –

関連する問題