javascript - Gun 如何在有时断开的 P2P 网络中管理用户
问题描述
请帮助我了解 Gun 如何在有时断开的 P2P 网络中管理用户。
假设有两个 Gun 实例I1和I2被配置为对等点,并且假设用户“doe”事先不存在于 I1 或 I2 上。假设在 I1 和 I2 未连接时在两个实例上都创建了用户“doe” 。两次尝试都应该成功。为了争论,让我们在 I1 doe1上调用“doe”用户,在 I2 上调用 doe2。
现在,当 I1 和 I2 连接时会发生什么?doe1 和 doe2 是否被认为是同一个用户?是否取决于用户注册时提供的密码?
我的理解是,只要用户注册时提供的密码相同,就可以。这是合理的。但我最大的问题是,如果他们被赋予不同的密码怎么办?
我认为在这种情况下, doe1 和 doe2 将被视为不同的用户......但那又如何呢?I1 和 I2 将如何处理这种情况?I1 会简单地拒绝 doe2 吗?反之亦然?还是留给实施?
您的建议将不胜感激。谢谢你。
安郎
解决方案
@Yasuro 大问:
GUN 用户名(别名)不是唯一的。
加密公钥是普遍唯一的。
你是正确的“Doe”可以离线创建。
如果不上网,或以某种方式同步,用户应该点击“登录”,它会失败(你应该错误他们离线)。如果他们单击“创建”,则将生成一个新的公钥,两个帐户将共享相同的“Doe”用户名(就像 Discord 让两个人拥有相同的用户名一样)。
不,一旦连接,它们将保持为不同的帐户。
在现实生活中,这些将是具有不同密码的不同用户,因此他们将正确登录到该帐户(GUN 在每个帐户上运行加密,并且只登录密码成功的那个)。
但是,如果用户不小心单击“创建”两次(或更多),每次都使用相同的密码,那么是的,帐户将因断开数据而碎片化 - 考虑到 GUN,编写同步帐户的代码应该很容易确实同步。希望有人能把它做成一个小模块供其他人使用——你会吗???:)
推荐阅读
- javascript - Exceljs追加行
- c# - 更新正则表达式以仅允许单个空格
- oauth - 使用 OIDC 的 Grafana
- c# - 获取数组内数组的最大计数?
- flutter - 未为“DocumentSnapshot”类型定义运算符“[]”
- tensorflow - 对 TensorFlow 和 PyTorch 的 GPU 支持
- javascript - 通过js自动选择最高质量?
- postgresql - 如何强制前缀“pg_”在 postgres 中创建新用户?
- macos - 每次我在我的 Mac 上打开终端时,我都会得到 /Users/shubh01/.zshrc:source:73: no such file or directory
- apparmor - AppArmor:没有任何附加参数的单个“文件”子句是什么意思?