我想使用 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/