J'utilise Angular 2 et TypeScript et je voulais enregistrer l'objet utilisateur comme une variable globale afin qu'il ne doive pas être récupéré plusieurs fois. J'ai trouvé le stockage de session et maintenant j'enregistre l'objet utilisateur là-bas .
Pensez-vous que ce soit une bonne pratique de les stocker là ou les données sont-elles trop sensibles? Si oui, quel autre type de cache puis-je utiliser?
Voici le code que j'utilise en ce moment:
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 () est appelé dans app.component lorsque ngOnInit (). L'objet utilisateur est également nécessaire dans d'autres composants de l'application.
C'est ok d'avoir des données sécurisées/sensibles dans le stockage de session.
En tant que stockage de session uniquement disponible pour la table et le domaine actuels ...
Si l'utilisateur vérifie les mêmes données de stockage de session dans un autre onglet de fenêtre, il ne sera pas là .... donc son stockage sécurisé ....
Si vous voulez en savoir plus, regardez sur sessionStorage
Vous pouvez soit utiliser sessionStorage
ou utiliser un service
.
Votre interface
:
export interface ISession {
session:Object
}
Votre classe service
réelle:
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
}
}
Vous pouvez maintenant injecter cette classe SessionService
dans une autre classe constructors
et l'utiliser.