首页 > 解决方案 > Gun 如何在有时断开的 P2P 网络中管理用户

问题描述

请帮助我了解 Gun 如何在有时断开的 P2P 网络中管理用户。

假设有两个 Gun 实例I1I2被配置为对等点,并且假设用户“doe”事先不存在于 I1 或 I2 上。假设在 I1 和 I2 未连接时在两个实例上都创建了用户“doe” 。两次尝试都应该成功。为了争论,让我们在 I1 doe1上调用“doe”用户,在 I2 上调用 doe2

现在,当 I1 和 I2 连接时会发生什么?doe1 和 doe2 是否被认为是同一个用户?是否取决于用户注册时提供的密码?

我的理解是,只要用户注册时提供的密码相同,就可以。这是合理的。但我最大的问题是,如果他们被赋予不同的密码怎么办?

我认为在这种情况下, doe1 和 doe2 将被视为不同的用户......但那又如何呢?I1 和 I2 将如何处理这种情况?I1 会简单地拒绝 doe2 吗?反之亦然?还是留给实施?

您的建议将不胜感激。谢谢你。

安郎

标签: javascriptdatabasep2pgungundb

解决方案


@Yasuro 大问:

  1. GUN 用户名(别名)不是唯一的。

  2. 加密公钥普遍唯一的。

你是正确的“Doe”可以离线创建。

如果不上网,或以某种方式同步,用户应该点击“登录”,它会失败(你应该错误他们离线)。如果他们单击“创建”,则将生成一个的公钥,两个帐户将共享相同的“Doe”用户名(就像 Discord 让两个人拥有相同的用户名一样)。

不,一旦连接,它们将保持为不同的帐户。

在现实生活中,这些将是具有不同密码的不同用户,因此他们将正确登录到该帐户(GUN 在每个帐户上运行加密,并且只登录密码成功的那个)。

但是,如果用户不小心单击“创建”两次(或更多),每次都使用相同的密码,那么是的,帐户将因断开数据而碎片化 - 考虑到 GUN,编写同步帐户的代码应该很容易确实同步。希望有人能把它做成一个小模块供其他人使用——你会吗???:)


推荐阅读