将用户对象保存在会话存储中
问题描述:
我正在使用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()。用户对象在应用程序的其他组件中也是需要的。
答
它可以在会话存储中安全/敏感的数据。
至于仅适用于当前的表和域会话存储...
如果在另一个窗口选项卡的用户检查相同的会话存储数据,那么它不会有....所以它的安全存储....
如果想了解更多,请对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
}
}
现在,你可以注入其他类constructors
这SessionService
类,并使用它。
+1
我会尝试一下! – sanyooh
你为什么不使用服务? –
我确实使用服务。我可以添加我的代码。 – sanyooh
您可以使用本地存储,因为会话存储仅在当前选项卡上可用,但在关闭后仍然存在(您必须明确删除它)。关于这两个区别之间的更多细节http://stackoverflow.com/questions/5523140/html5-local-storage-vs-session-storage – theFreedomBanana