node.js - Angular 客户端数据的存储位置,稍后在 REST-API 中用于获取信息
问题描述
我有一个角度应用程序,每当用户登录时,我都会通过 REST-API 请求从服务器获取他的所有数据以及 jsonwebtoken 并将其存储在本地存储中。
之后,我在其他 REST-API 调用中使用相同的用户数据(例如email, account_status, id
etc)来获取更多信息。这显然不是正确的做法,用户可以localstorage
很容易地修改自己的数据并获取其他用户的信息。
我jsonwebtoken
用于身份验证,authgaurd service
通过 REST-API 调用验证令牌。
任何人都可以建议使用简短描述存储信息的正确方法。我可以使用 Cookie 来解决问题吗?
解决方案
创建一个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
或者在将数据存储在本地存储中时使用某种加密(jsencrypt
或cryptojs
),这样用户将无法修改它。仍然这不是一个防弹解决方案。如果您要存储一些敏感数据,我建议您将其存储在服务器中。
推荐阅读
- php - 如何在 laravel 的不同表中的两列中对两个数据求和
- python - Python Flask:参见“ssize_t”的声明
- angular - 找不到“object”类型的不同支持对象“[object Object]”。--> 要在表格中显示的 VirusTotal JSON
- python - 使用不同数量的参数定义 init() 方法的正确方法(用于多重继承)
- python - 从python中的制表符分隔文件打印特定列
- javascript - 在不知道其结构的情况下显示 React 组件
- here-api - HERE Geocoder API 自由格式文本匹配
- sql-server - 如何解决这个问题?无法打开登录请求的数据库“”。登录失败
- python - 如何使水平条形图的布局紧凑?
- java - 坚持如何在一个对象数组中检索按名称搜索的对象的数据