Web应用程序:我应该向用户发回什么?

Web application : What should I send back to the user?

本文关键字:什么 用户 应用程序 我应该 Web      更新时间:2023-09-26

我正在编写一个web应用程序- angularJS在前端,REST API和mongodb作为后端。支持于node.js.

问题背景:

我知道我需要使用基于令牌的身份验证对我的用户进行身份验证,然后我需要让令牌对此后的每个新请求都可用。我还需要能够保留用户ID,以便稍后在数据库上进行事务处理。

我对该策略的主要问题是,这意味着在获得令牌后,我需要在登录后保留令牌和ID,并且因为我正在构建web前端,所以我将这些存储在localStorage中。

任何可能心怀恶意的用户都可能选择从该存储中转储数据,并查看他们可以更改哪些值来获取其他人的数据,就在他们浏览器的开发工具中!

这必须是可以修复的东西,我知道你们中的一些人过去会解决这个问题。那么在这种情况下我们该怎么做呢?

也许有一种方法可以更安全的方式做到这一点?或者我根本不需要存储它们?

任何可能怀有恶意的用户都可能选择从中转储数据储存,看看他们可以改变什么价值来换取别人的数据,就在他们浏览器的开发工具中!

真的吗?您应该基于拥有访问令牌的用户来授权请求,因此,如果整个用户转到任何浏览器内调试工具并获得令牌,该用户将只能做UI可以做的事情。

另一方面,您不需要持有用户id。一旦整个用户在您的系统中获得授权,该用户id应该是访问令牌的一部分,并且应该只有服务器能够使用它。

所谓的访问令牌可以作为加密的单词存储在Web浏览器cookie中,这比本地存储更好,因为cookie是作为任何HTTP请求的一部分发送的,无论是常规的还是AJAX的(即当您想要执行对API的请求时,您不需要手动包含令牌),并且在服务器授权过程中,您应该解密令牌并获取其信息(通常称为声明)