我正在尝试让用户仅登录一次,并将其信息保存在所有服务器上。用户信息的任何更改将立即对所有服务器可用。是否可以在不让每个用户分别“登录”每个服务器的情况下执行此操作?
有点像$_SESSION
对于php,但对于Node.js
设计1-
我认为最好的方法是,但不知道如何在服务器之间共享套接字数据,也许使用PHP的$_SESSION
之类的方法?
设计2-
我目前正在做什么:
用户使用socket.emit
来main.js
main.js将用户信息添加到发射
main.js发出到适当的服务器
适当的服务器发出回main.js
main.js最终回传给用户
这似乎效率低下,感觉不对劲
最佳答案
如果您的信息主要是静态的,则可以尝试类似于JWT的方法。这些是身份验证服务器可以提供的加密签名令牌,用户可以随身携带。该令牌可能包含有关您希望每个服务器都可用而不需要用户访问的用户的信息。
如果不是这样,则您可能正在考虑在所有服务器之间共享数据库,并将其作为它们之间同步的点。
根据我们的评论进行的更新(以便以后可以将其删除):
如果您决定使用自动包含的JWT令牌,则根本不需要去数据库。这些令牌将包含所需的所有信息,但对于不了解其内容的最终用户而言将是透明的。
另外,一旦您了解了JWT标准,就不必使用JSON对象,因为它只是可以由另一个对象切换的序列化方法。
您需要在身份验证时(或在需要时)向用户提供这些令牌之一,然后要求该用户在向其他服务器请求信息或行为时向其他服务器提供该令牌。令牌将成为您的同步方法。