2017-10-23 12 views
0

私のアプリケーションでは、JWTセキュリティを追加しようとしています。応答テキストで私はユーザーとユーザー名の権限を追加します。すべてはうまくいきましたが、応答テキストを分割しようとすると機能しません。レスポンステキストを分割する方法は?

login(username: string, password: string): Observable<boolean> { 
    return this.http.post(AUTH_USER_PATH, JSON.stringify({username: username, password: password}), 
     this.getPlainRequestOptions()) 
     .map((response: Response) => { 


      let token: string = response.headers.get('Authorization').slice(7); //working 
      let authorities: string[] = JSON.parse(response.text().split('|')[0]); //not working 
      let username: string = JSON.parse(response.text().split('|')[1]); //not working 


      console.log(authorities); 
      console.log(username); 
      if (token) { 
       localStorage.setItem('token', JSON.stringify(token)); 
       localStorage.setItem('authorities', response.text()); 
       localStorage.setItem('username', response.text()); 
       return true; 
      } else { 
       return false; 
      } 
     }) 
     .catch((error: any) => Observable.throw(error)); 
} 

私はスプリットを使用していけない場合は、コンソールに、私は以下を参照してください

この結果を得るために、この文字列(配列)を分割する方法を容易
[ROLE_USER, ROLE_ADMIN]|user1 

authorities = [ROLE_USER, ROLE_ADMIN]; 
username = "user1"; 
+0

を助けるべきであるリンクで、あなたはauthorities' 'に' '[ROLE_USER、ROLE_ADMIN]の配列を取得することはできません。 'response.text()。split( '|')[0]'は、あなたがさらに配列に解析できる文字列 '[ROLE_USER、ROLE_ADMIN]' 'を得ます。 – eminlala

+0

しかし、この分割を追加してもコンソールには何も表示されません。私はログインできません。 –

答えて

0

|文字は正規表現になると特殊文字です。 \

を使用して特殊文字をエスケープしようとします。権限:string [] = JSON.parse(response.text()。split( '\ |')[0]);ここで

はあなたが書いたものに基づいてWhat special characters must be escaped in regular expressions?

関連する問題