如何从会话存储中获取价值

时间:2020-08-07 11:02:20

标签: angular

所以我创建了一个方法,当用户单击登录按钮时将调用该方法。通过这种方法,我还将数据存储在会话存储中,该数据存储了用户的名称和角色。因此,当我尝试从会话存储中获取数据时,我正在控制台中获取[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。

4 个答案:

答案 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);
  }