将用户对象保存在会话存储中

将用户对象保存在会话存储中

问题描述:

我正在使用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

它可以在会话存储中安全/敏感的数据。

至于仅适用于当前的表和域会话存储...

如果在另一个窗口选项卡的用户检查相同的会话存储数据,那么它不会有....所以它的安全存储....

如果想了解更多,请对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 
     } 
    } 

现在,你可以注入其他类constructorsSessionService类,并使用它。

+1

我会尝试一下! – sanyooh