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-mvc - .NET Core 带密码的分布式 Redis 缓存

java - Amazon Elasticache Redis 集群 - 无法获取端点

Redis - 如果主服务器关闭,则将哨兵配置为选择从服务器

c# - 刷新更新面板后重定向

c# - asp.net c# 中的正则表达式

asp.net - 如何在 ASP.NET Core 自定义标签助手中使用 View ?

android - 使用 3.0 SDK 在 FB 墙上发帖

php - 将 Redis 用作 PHP session 处理程序时的键前缀......?

c# - 如何在 GridView 的 CommandArgument 中传递多个参数?

web-applications - 在分布式应用程序中管理 session