2017-01-10 103 views
3

我正在使用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()被調用的app.component時ngOnInit()。用戶對象在應用程序的其他組件中也是需要的。

+0

你爲什麼不使用服務? –

+0

我確實使用服務。我可以添加我的代碼。 – sanyooh

+0

您可以使用本地存儲,因爲會話存儲僅在當前選項卡上可用,但在關閉後仍然存在(您必須明確刪除它)。關於這兩個區別之間的更多細節http://stackoverflow.com/questions/5523140/html5-local-storage-vs-session-storage – theFreedomBanana

回答

2

它可以在會話存儲中安全/敏感的數據。

至於僅適用於當前的表和域會話存儲...

如果在另一個窗口選項卡的用戶檢查相同的會話存儲數據,那麼它不會有....所以它的安全存儲....

如果想了解更多,請對sessionStorage

2

看看你既可以使用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 
     } 
    } 

現在,你可以注入其他類constructorsSessionService類,並使用它。

+1

我會嘗試一下! – sanyooh