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.
4 Réponses :
Essayez de l'analyser
(JSON.parse(window.sessionStorage.getItem('empDetails')).id)
Pouvez-vous préciser votre question?
Vous avez oublié JSON.stringify
Essayez:
JSON.parse(sessionStorage.getItem('userData'))
Et puis juste:
sessionStorage.setItem('userData',JSON.stringify(user))
ya celui-ci est également nécessaire
celui-ci fonctionne pour moi
department = JSON.parse(window.sessionStorage.getItem('empDetails')).department;
constructor() { }
ngOnInit() {
console.log(this.department);
}
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
sessionStorage.getItem ('login') celui-ci fonctionne pour moi