使用 Redis 作为会话状态提供者
Using Redis as a session state provider
我想用 ASP.Net 创建 真实的 RESTful API。根据 REST 架构。应用程序必须是无状态的。这意味着我不能使用正常会话。我找到了一篇描述如何使用 Redis 作为会话状态提供程序的文档 here。由于它是外部的(因为不是服务器的一部分),它是否适合创建无状态 API?我将如何去做。我会创建一个密钥来声明用户已通过身份验证,然后创建一个密钥来引用当前用户,还是我想错了?
您可以将 Redis 用作缓存来保存有关用户的各种状态。这个想法是,当用户登录时,您可能需要从数据库中加载一堆关于他们的信息(姓名、地址等),您知道用户可能需要重用其中的一些信息信息,因此您不想每次都从数据库中重新加载它。相反,您可以将其缓存在 Redis 中几分钟,这样在用户的下一个请求中,您可以非常快速地从 Redis 中提取数据,而不必返回到您的数据库。
对于身份验证,您可以在 redis 缓存中创建一个临时令牌,您还可以将其作为 cookie 返回给用户,这样您就可以在后续请求中检查它是否存在,而无需 运行一堆耗时的 bcrypt 散列或一些用于每个后续身份验证的散列。
这一切都保持无状态,因为即使缓存出于任何原因不可用,用户的请求仍然包含回答他或她的请求所需的所有状态。 Redis 所做的只是让您在可用时加快响应速度。
我想用 ASP.Net 创建 真实的 RESTful API。根据 REST 架构。应用程序必须是无状态的。这意味着我不能使用正常会话。我找到了一篇描述如何使用 Redis 作为会话状态提供程序的文档 here。由于它是外部的(因为不是服务器的一部分),它是否适合创建无状态 API?我将如何去做。我会创建一个密钥来声明用户已通过身份验证,然后创建一个密钥来引用当前用户,还是我想错了?
您可以将 Redis 用作缓存来保存有关用户的各种状态。这个想法是,当用户登录时,您可能需要从数据库中加载一堆关于他们的信息(姓名、地址等),您知道用户可能需要重用其中的一些信息信息,因此您不想每次都从数据库中重新加载它。相反,您可以将其缓存在 Redis 中几分钟,这样在用户的下一个请求中,您可以非常快速地从 Redis 中提取数据,而不必返回到您的数据库。
对于身份验证,您可以在 redis 缓存中创建一个临时令牌,您还可以将其作为 cookie 返回给用户,这样您就可以在后续请求中检查它是否存在,而无需 运行一堆耗时的 bcrypt 散列或一些用于每个后续身份验证的散列。
这一切都保持无状态,因为即使缓存出于任何原因不可用,用户的请求仍然包含回答他或她的请求所需的所有状态。 Redis 所做的只是让您在可用时加快响应速度。