web-dev-qa-db-ja.com

ユーザーオブジェクトをセッションストレージに保存する

Angular 2およびTypeScriptを使用しており、ユーザーオブジェクトをグローバル変数のように保存したいので、複数回取得する必要はありません。セッションストレージを見つけて、そこにユーザーオブジェクトを保存します。

そこに保存するのは良い習慣だと思いますか、それともデータが敏感すぎますか?その場合、他のどのような種類のキャッシュを使用できますか?

私が今使っているコードは次のとおりです。

user.service.ts:

getProfile() {
    let cached: any;
    if (cached = sessionStorage.getItem(this._baseUrl)) {
        return Observable.of(JSON.parse(cached));
    } else {
        return this.http.get(this._baseUrl).map((response: Response) => {
            sessionStorage.setItem(this._baseUrl, response.text());
            return response.json();
        });
    }
}

GetProfile()は、ngOnInit()のときにapp.componentで呼び出されます。ユーザーオブジェクトは、アプリケーションの他のコンポーネントでも必要です。

10
sanyooh

セッションストレージにセキュリティで保護されたデータや機密データが含まれていても問題ありません。

現在のテーブルとドメインでのみ利用可能なセッションストレージとして...

ユーザーが別のウィンドウタブで同じセッションストレージデータをチェックすると、そこにはありません。

詳細を知りたい場合は、 sessionStorage をご覧ください

9
Pankaj Badukale

sessionStorageを使用するか、serviceを使用できます。

あなたのinterface

export interface ISession {
    session:Object
}

実際のserviceクラス:

    import {Injectable} from '@angular/core';

    @Injectable()
    export class SessionService implements ISession {    
        private _session: session

        constructor(){

        }

        set session(value){
            this._session = value;
        }

        get session(){
            return this._session
        }
   }

これで、このSessionServiceクラスを他のクラスconstructorsに挿入して使用できます。

7
Thalaivar