0
votes

comment tirer le meilleur parti du stockage de session

J'ai donc créé une méthode qui sera appelée lorsque l'utilisateur cliquera sur le bouton de connexion. Sur cette méthode, je stocke également des données sur le stockage de session qui stockent le nom et le rôle d'un utilisateur. Ainsi, quand j'essaye d'obtenir des données du stockage de session, j'obtiens [objet d'objet] dans la console. Comment en tirer des données.

{sub: "shiv@gmail.com", Roles: Array(1), exp: 1596814970, iat: 1596796970}
   Roles: ["System-Admin"]
  exp: 1596814970
   iat: 1596796970
  sub: "shiv@gmail.com"
   __proto__: Object

La sortie produite par Console.log (utilisateur) dans la méthode ci-dessus est

onSubmit() {

    this.submitted = true;

    this.loaderService.display(true);

    try {

      if (!this.loginForm.invalid) {

        this.login

          .Login(this.f.UserName.value, this.f.Password.value)

          .pipe(first())

          .subscribe(

            (data: Login) => {

              if (data.token) {

                this.loaderService.display(false);

                let user = this.jwtHelperService.getDecodeAccessToken(

                  data.token

                );

                sessionStorage.setItem('userData', user);

                console.log(user);

                this.router.navigate(['/home']);

              } else {

                this.loaderService.display(false);

                this.loginMessage = data.msg;

                this.router.navigate(['/home']);

              }

            },

            (error) => {

              this.loaderService.display(false);

              this.loginMessage = error.error.error_description;

              console.log(error);

            }

          );

      } else {

        this.loaderService.display(false);

      }

    } catch (error) {

      this.loaderService.display(false);

    }

  }

userInfo: any = sessionStorage.getItem ('userData'); Ainsi, lorsque j'essaye de console.log (userInfo), j'obtiens [objet objet] Alors, comment en extraire un sous et un rôle.


1 commentaires

sessionStorage.getItem ('login') celui-ci fonctionne pour moi


4 Réponses :


0
votes

Essayez de l'analyser

(JSON.parse(window.sessionStorage.getItem('empDetails')).id)


1 commentaires

Pouvez-vous préciser votre question?



1
votes

Vous avez oublié JSON.stringify

Essayez:

JSON.parse(sessionStorage.getItem('userData'))

Et puis juste:

sessionStorage.setItem('userData',JSON.stringify(user))


1 commentaires

ya celui-ci est également nécessaire



0
votes

celui-ci fonctionne pour moi

  department = JSON.parse(window.sessionStorage.getItem('empDetails')).department;
  
  constructor() { }

  ngOnInit() {
    console.log(this.department);
  }


0 commentaires

1
votes

Sessionstorage (ainsi que localstorage) stocke des paires clé / valeur de chaînes (!), ce qui signifie que vous ne pouvez pas simplement y stocker des objets et les récupérer comme vous le feriez par exemple avec un tableau.

Pour stocker des objets dans l'un ou l'autre stockage:

sessionStorage.setItem ('object', JSON.stringify (obj))

-> cela convertit votre objet en une chaîne JSON (! ) et le stocke sous la clé object .

Pour le récupérer, vous devez analyser la chaîne JSON en un objet afin que vous puissiez accéder aux propriétés comme d'habitude. p >

var jsonStringObj = sessionStorage.getItem('object'); // This is the json string we stored

var obj = JSON.parse(jsonStringOBJ); // this is your object

console.log(obj.department); // access properties as usual

 


0 commentaires