所以我创建了一个方法,当用户单击登录按钮时将调用该方法。通过这种方法,我还将数据存储在会话存储中,该数据存储了用户的名称和角色。因此,当我尝试从会话存储中获取数据时,我正在控制台中获取[object Object]。如何从中获取数据。
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);
}
}
上述方法中Console.log(用户)产生的输出为
{sub: "shiv@gmail.com", Roles: Array(1), exp: 1596814970, iat: 1596796970}
Roles: ["System-Admin"]
exp: 1596814970
iat: 1596796970
sub: "shiv@gmail.com"
__proto__: Object
userInfo:任意= sessionStorage.getItem('userData'); 因此,当我尝试console.log(userInfo)时,我会得到 [object Object] 那么如何从中提取sub和Role。
答案 0 :(得分:1)
您忘记了JSON.stringify
尝试:
sessionStorage.setItem('userData',JSON.stringify(user))
然后:
JSON.parse(sessionStorage.getItem('userData'))
答案 1 :(得分:1)
会话存储(以及本地存储)存储字符串的键/值对(!),这意味着您不能像在数组中那样简单地在其中存储对象并检索它们。
要将对象存储在任一存储中:
sessionStorage.setItem('object', JSON.stringify(obj))
->这会将您的对象转换为JSON字符串(!),并将其存储在键object
下。
要取回它,您需要将JSON字符串解析回一个对象,以便您可以照常访问属性。
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
答案 2 :(得分:0)
尝试解析
(JSON.parse(window.sessionStorage.getItem('empDetails')).id)
答案 3 :(得分:0)
这个为我工作
department = JSON.parse(window.sessionStorage.getItem('empDetails')).department;
constructor() { }
ngOnInit() {
console.log(this.department);
}