Javascript 在node.js中验证和存储用户登录信息的最有效方法
我知道存储和验证用户登录信息的两种方法:Javascript 在node.js中验证和存储用户登录信息的最有效方法,javascript,node.js,Javascript,Node.js,我知道存储和验证用户登录信息的两种方法: 将用户id存储在服务器端会话中,然后在有人呼叫服务器时检查他们是否有用户会话。(使用节点客户端会话) 当用户登录时,将身份验证令牌存储在用户表中,并将令牌本地存储在用户客户端上。然后,当用户调用服务器时,他们将身份验证令牌作为头发送,并检查令牌是否在用户表中 虽然这两种方法都是可行和适用的,但我对这两种方法都有问题: 有人告诉我,在会话中存储信息违背了RESTAPI的自动可伸缩性思想。这是真的吗?有办法解决吗 在存储身份验证密钥时,每个用户是否只能存储一
您可以将令牌存储在像Redis这样的键值存储中,而不是关系数据库中,这样会更快。Redis还支持将密钥超时一段时间,因此过期的令牌将自动消失。您还可以对其进行设置,使每个令牌在使用后失效,并且对API的任何请求都会返回一个新令牌以在下一个请求中使用,从而允许用户不断刷新其令牌。假设您使用的是express,您可以使用它来管理会话 然后,您需要添加一个合适的内存存储,而不是默认的MemoryStore,它仅用于调试,并且不会扩展到多个流程实例(出于您在问题中提到的原因)
FRO示例,如果使用PostgreSQL数据库,可以考虑使用。这将把会话存储在数据库中,这样会话管理就不会阻止您扩展node.js服务器。此外,您可以为每个用户存储多个会话,这些会话将根据您配置的最大值过期(并自动擦除),从而解决您提到的第二个问题