2017-11-19 4 views
0

私はウェブサイト https://github.com/auth0/angular2-jwt/tree/v1.0Auth0 JWT分岐v1.0を持つ4角

トラブルが以下のコードであり、それはapp.module.tsであることが必要である経由で利用可能になるコードに従ってください。このコードはログインページが表示される前に初期化されるので、私はいつも空の 'access_token'を持っています。誰かがログインが認証された後にこれを動作させる方法を教えてもらえますか?ありがとうございました。

JwtModule.forRoot({ 
     config: { 
     tokenGetter:() => { 
      return localStorage.getItem('access_token'); 
     }, 
     whitelistedDomains: ['localhost:3001'] 
     } 
    }) 
+0

をapp.module.ts。実際に呼び出されていないのです – user184994

+0

console.log tokenGetter :()=> {console.log( '私はここにいます'); return localStorage.getItem( 'access_token'); }コンソールログを起動し、後続のhttp.getで自分のAPIサーバーに空のトークンを渡しています。 – AlbertK

+0

ブラウザをチェックインすると、実際にlocalStorageにトークンが設定されていますか?そしてあなたは 'http'とは対照的に' httpClient'を使用していますか? – user184994

答えて

0

ありがとうございます。ラムダを関数に変換する必要があります。そうでなければ、プロダクション用にコンパイルしません(ng build --prod)。

また、APIサーバーからトークンを取得するためのログイン機能も約束する必要があります。

// Authenticate/Loginクラス。

public isLogin(userkey: string, password: string): Promise<boolean> { 
     const logindata = new LoginData(); 
     logindata.UserKey = userkey; 
     logindata.Password = password; 


     console.log('Before Get Token'); 
     const retpromise = this.http.post<TokenData>(`${this.Url}/login`, logindata, {headers: this.getHeader()}) 
     .map(m => { 
        console.log('Got Token Data'); 
        localStorage.setItem('token', m.token); 
        return true; 
     }) 
     .toPromise(); 
     return retpromise; 

//はありませんそのすべてのモジュールがトークンを取得する方法を知っているようにtokenGetter` `のための機能を提供している

export function getToken(): string { 
    return localStorage.getItem('access_token'); 
} 

@ngModule({ 
declarations: [...], 
imports: [ 
BrowserModule, 
HttpClientModule, 
JwtModule.forRoot({ 
     config: { 
     tokenGetter: getToken 
     }, 
     whitelistedDomains: ['localhost:3001'] 
     } 
    }) 
} 
], 
bootstrap:[AppComponent])