web-dev-qa-db-fra.com

Enregistrer l'objet utilisateur dans le stockage de session

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.

10
sanyooh

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

9
Pankaj Badukale

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.

7
Thalaivar