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で呼び出されます。ユーザーオブジェクトは、アプリケーションの他のコンポーネントでも必要です。
セッションストレージにセキュリティで保護されたデータや機密データが含まれていても問題ありません。
現在のテーブルとドメインでのみ利用可能なセッションストレージとして...
ユーザーが別のウィンドウタブで同じセッションストレージデータをチェックすると、そこにはありません。
詳細を知りたい場合は、 sessionStorage をご覧ください
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
に挿入して使用できます。