首页 > 解决方案 > Angular 客户端数据的存储位置,稍后在 REST-API 中用于获取信息

问题描述

我有一个角度应用程序,每当用户登录时,我都会通过 REST-API 请求从服务器获取他的所有数据以及 jsonwebtoken 并将其存储在本地存储中。

之后,我在其他 REST-API 调用中使用相同的用户数据(例如email, account_status, idetc)来获取更多信息。这显然不是正确的做法,用户可以localstorage很容易地修改自己的数据并获取其他用户的信息。

jsonwebtoken用于身份验证,authgaurd service通过 REST-API 调用验证令牌。

任何人都可以建议使用简短描述存储信息的正确方法。我可以使用 Cookie 来解决问题吗?

标签: node.jsangularrestjwtlocal-storage

解决方案


创建一个shared service并导入app module,在所有组件中使用它,

import { Injectable } from '@angular/core';
import {Subject} from 'rxjs/Subject';
import {Observable} from 'rxjs/Observable';
import { MyWrapper } from '../models/models';

@Injectable()
export class SharedService{

  data:any={};

  setData(key,value) {
     this.data[key]=value;
  }

  clearData() {
     this.data={};
  }

  getData(key) {
    return this.data[key];
  }

}

注意:这与本地存储不完全一样,一旦浏览器关闭或页面刷新类型的会话存储,您将丢失数据,但您仍然可以跨组件放置和获取数据。

要设置数据,

 sharedService.setData("mydata","mydata");

要获取数据,

 sharedService.getData("mydata");

如果您希望数据是持久的,那么替代方法是您可以将数据存储在服务器中并获取数据,ngOnInit或者在将数据存储在本地存储中时使用某种加密(jsencryptcryptojs),这样用户将无法修改它。仍然这不是一个防弹解决方案。如果您要存储一些敏感数据,我建议您将其存储在服务器中。


推荐阅读