2017-10-26 8 views
0

ユーザーが認証すると、JWTトークンとIDがブラウザのsessionStorageオブジェクトに保存されるng4アプリケーションがあります。私の認証モジュール/サービスでアングル4とアプリケーションの初期化時のセッションストアのロード

、私はコンストラクタ(アイデンティティオブジェクトは、実際には、すでにセッションストレージに保存されている)で、次のしている:私は、ブラウザを更新すると

this.identity = new Identity(); 

    let identity = sessionStorage.getItem('myIdentity'); 
    if (identity != null) { 
     this.setAuthenticated(identity); 
    } 

、私は私は(例えば、セッション・ストレージ・オブジェクトがまだブラウザによって初期化されていない)であるなぜを知っ

NodeInvocationException: sessionStorage is not defined 
ReferenceError: sessionStorage is not defined 

を取得します。

アプリの読み込み時にsessionStorageオブジェクトをチェック(ロード)するためのベストプラクティスは何ですか?

答えて

0

更新するとsessionStorageは失われますが、ブラウザのタブでsessionStorageが有効になります。タブを閉じると、セッションストレージのデータはなくなります。ローカルストレージを使用してトークンを保存することができます。

+0

これは正しくありません。 SessionStorageは、ウィンドウが開いたままである限り(他のウィンドウでは使用できませんが、それでも問題ありません)、ページの更新を繰り返し続けます。これを確認するには、角度エラーが発生しても、Chromeのセッションストアでそのオブジェクトを確認できます。 – a11smiles

+0

私はそれを知っていますが、それは私が求めているものではありません。ユーザーがページを更新する場合にセッション記憶域を使用したい。 – a11smiles

+0

また、あなたの応答は役に立たない。あなたが気づいたら、私は 'コンストラクタ'に上記のコードがあると言いました。ローカルストレージを使用するようにコードを更新したとしても、 'localStorage is undefined'という角度例外が発生します。 – a11smiles

関連する問題