2017-02-10 6 views
2

angle2-jwtプラグインでIonic 2の最終バージョンを使用しています。私は正常にログインすると、私はページを更新し、私はトークン送信したことがない私のauth.tsヘッダーで承認をチェックしてみたら、私はストレージにIonic 2アプリはストレージからJWTトークンを取得しません

this.storage.set('id_token', res.token); 

を保存したトークン受けています。私は問題が非同期ストレージであることを理解していますが、解決方法はわかりません。私は多くの異なるソリューションを試しました...

また、私の定数にトークンを保存すると、それは完全に正常に動作します。

... 

export function getAuthHttp(http) { 
    return new AuthHttp(new AuthConfig({ 
    noJwtError: true, 
    globalHeaders: [{'Content-Type': 'application/json', 'x-academy': 'academy'}], 
    tokenGetter:() => storage.get('id_token'), 
    }), http); 
} 

... 

providers: [ 
    {provide: ErrorHandler, useClass: IonicErrorHandler}, 
    {provide: AuthHttp, useFactory: getAuthHttp, deps: [Http]} 
... 
] 

そして、私のauth.ts:

... 
@Injectable() 
export class Auth { 

    serverUrl: string; 
    storage: Storage = new Storage(); 

    constructor(public http: Http, 
      public authHttp: AuthHttp, 
      public constantsService: ConstantsService, 
    ) {     
     this.serverUrl = this.constantsService.API_ENDPOINT(); 

    } 

    login(credentials){ 
     let headers = new Headers({'Content-Type': 'application/json', 'x-academy': 'academy' }); 
     return this.authHttp.post(this.serverUrl+'/login', JSON.stringify(credentials), {headers: headers}) 
    } 
    .... 
    public checkAuthentication(){ 
     return this.authHttp.post(this.serverUrl+'/restricted',{}) 
    } 
    .... 

ありがとう

私app.module.tsは、このようになります。

+0

このコードを見ている人にとっては、すべてが良いと言えるでしょう。私は本当のことを覚えておくのを忘れた...はい、私は知っている... – ACES

答えて

0

変更するには、代わりにイオンストレージののlocalStorageを使用するには、このようgetAuthHttp:

export function getAuthHttp(http) { 
    return new AuthHttp(new AuthConfig({ 
    globalHeaders: [{'Accept': 'application/json'}], 
    //tokenGetter: (() => storage.get('id_token').then((val)=>{return val})), 
    tokenGetter: (() => JSON.parse(window.localStorage.getItem("id_token"))), 
    noJwtError: true, 
    headerPrefix: "JWT", 
    }), http); 
} 

私の知る限り、auth0 SDKには、それだけで使用しています...とにかくid_tokenを格納するためのイオンストレージを使用していませんwindow.localStorageを使用することもできます。これを使用しても同期メソッドを使用しても、この約束事を避けることができます。

関連する問題