asp.net - 使用 Redis 作为 session 状态提供者

标签 asp.net session redis stateless

我想使用 ASP.Net 创建真正的 RESTful API。根据REST架构。应用程序必须是无状态的。这意味着我无法使用正常 session 。我找到了一个文档here描述如何使用 Redis 作为 session 状态提供程序。由于它是外部的(因为不是服务器的一部分),它是否适合创建无状态 API?我该怎么办呢。我是否会创建一个 key 来声明用户已通过身份验证,然后可能创建一个 key 来引用当前用户,还是我认为错误?

最佳答案

您可以使用 Redis 作为缓存来保存有关用户的各种状态。这个想法是,当用户登录时,您可能需要从数据库加载一堆有关他们的信息(姓名、地址等...),此时您知道用户可能需要重用其中的一些信息信息,因此您不想每次都从数据库重新加载它。相反,您可以将其缓存在 Redis 中几分钟,这样在用户下一个请求时,您可以非常快速地从 Redis 中提取数据,而不必返回数据库。

对于身份验证,您可以在 Redis 缓存中创建一个临时 token ,并将其作为 cookie 返回给用户,以便您可以在后续请求中检查它是否存在,而无需运行一堆耗时的 bcrypt每个后续身份验证的哈希值或类似的值。

这一切都保持无状态,因为即使缓存由于某种原因不可用,用户的请求仍然包含回答他或她的请求所需的所有状态。 Redis 所做的一切就是让您在可用的情况下加快响应速度。

关于asp.net - 使用 Redis 作为 session 状态提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793415/

相关文章:

asp.net - 使用带有代码隐藏的网络表单通过反射引发事件

javascript - 动态打开一个用 Javascript 定义的 radwindow

c# - 使用 System.Web.Routing 时遇到的问题

c# - 在 .NET MVC 应用程序中处理 JWT 过期

redis - 哨兵既不认识主人也不认识自己

python - celery :错误:无法识别的参数:worker -A test_tasks -l info -c 5

javascript - 如何在页面加载时为复选框列表中的最新日期设置我的默认选中复选框而不是全选?

php - (php) 在初始表单后获取额外的输入?

java - 从命令行使用 curl 时 session 死亡

asp.net-core - 在 asp .NET 核心中连接到特定的 Azure Redis 数据库