首页 > 解决方案 > 如何在 Web API Asp.NET Core 5 中持久化常用数据?

问题描述

我正在使用 ASP.NET Core 5 开发 WebAPI 服务。如果用户已登录,我将使用 JWT 令牌对每个请求进行身份验证。对于客户端,我使用的是 Next.js。我正在寻找一种方法来保存经常使用的数据,如用户(用户 ID、电子邮件、用户名、角色),而无需访问数据库。我做了深入的研究,但大多数答案看起来已经过时了。
我看过的一些替代品

  1. 使用 JWT 有效负载保存 User 对象。(它看起来不太安全)。
  2. 例如,使用缓存系统 Redis(这看起来是最好的选择之一,但它很耗时并且需要大量资源)你们还有其他建议吗?

标签: asp.netasp.net-coreredisjwtasp.net-core-webapi

解决方案


这是一个非常主观的话题,但这是我的两分钱:

  1. 用数据打包你的 JWT 是不安全的(正如你所指出的),如果你在每个请求中传递一个非常大的 JWT,也会使你的流量膨胀。您可以通过查看 JWE(JSON Web 加密)来克服第一个问题(安全性)——这只是加密 JWT。但是臃肿问题仍然存在,这取决于您需要多少信息,并且存在与加密/解密过程相关的开销。

  2. 缓存是解决您的问题的经典解决方案,而 Redis 是最常见的实现之一(如果您在 Azure 上托管,则更容易)。如果您可以处理费用(这在很大程度上取决于您正在缓存的数据量和客户端连接数),则使用托管 Redis 缓存可以简化此过程。如果您将来需要添加更多要缓存的数据或更改缓存的数据,这将更具可扩展性。


推荐阅读