asp.net - 如何在 Web API Asp.NET Core 5 中持久化常用数据?
问题描述
我正在使用 ASP.NET Core 5 开发 WebAPI 服务。如果用户已登录,我将使用 JWT 令牌对每个请求进行身份验证。对于客户端,我使用的是 Next.js。我正在寻找一种方法来保存经常使用的数据,如用户(用户 ID、电子邮件、用户名、角色),而无需访问数据库。我做了深入的研究,但大多数答案看起来已经过时了。
我看过的一些替代品
- 使用 JWT 有效负载保存 User 对象。(它看起来不太安全)。
- 例如,使用缓存系统 Redis(这看起来是最好的选择之一,但它很耗时并且需要大量资源)你们还有其他建议吗?
解决方案
这是一个非常主观的话题,但这是我的两分钱:
用数据打包你的 JWT 是不安全的(正如你所指出的),如果你在每个请求中传递一个非常大的 JWT,也会使你的流量膨胀。您可以通过查看 JWE(JSON Web 加密)来克服第一个问题(安全性)——这只是加密 JWT。但是臃肿问题仍然存在,这取决于您需要多少信息,并且存在与加密/解密过程相关的开销。
缓存是解决您的问题的经典解决方案,而 Redis 是最常见的实现之一(如果您在 Azure 上托管,则更容易)。如果您可以处理费用(这在很大程度上取决于您正在缓存的数据量和客户端连接数),则使用托管 Redis 缓存可以简化此过程。如果您将来需要添加更多要缓存的数据或更改缓存的数据,这将更具可扩展性。
推荐阅读
- python-3.x - 使用 Pydrive 按 modifiedTime 查询文件
- r - 使用 R 中的绘图函数,我希望将带有标签的数据点展开而不是索引,因为我只有 y 值
- c# - 如何在没有无头浏览器的情况下在服务器端创建 Google 图表?
- javascript - 将表单名称发送到 JS/jQuery 和序列化
- python - Python:从一个 txt 文件中解析多个 JSON 对象
- c++ - 指针作为类变量 Qt
- c# - 将值从“select asp-for”传递到“textarea”asp.net core razor
- dc.js - 今天如何在折线图上添加垂直线?
- meteor - MeteorJS - 不能使用 npm 包作为 Picker 路由器的中间件
- r - 为什么我不能在 R 中的线性模型中预测新的观察结果