我正在用gundb做一些第一步,它看起来不错。但是我很难想出我正在计划的应用程序所需的解决方案。
这实际上是一个非常常见的用例,应该有一组用户被允许写帖子,但所有用户都应该能够阅读它们。
在文档中写了很多关于如何进行读取访问的文章,但我找不到有关如何处理对某些数据的写入访问的任何内容。
是否有代码示例?枪一般如何处理写入权限(一些文档/解释(?
@gwildu公共读取的限制性写入访问目前在SEA(安全,加密,授权 - GUN的权限框架(中比进行私有读取访问更容易/测试版(尽管这已经完全可能直接使用SEA的较低级别的实用程序API,文档在这里(。尽管我们正在努力提高易用性、抽象/API 和其他功能。
因此,您需要知道的第一件事总结在这个相当简短的指南中:
https://gun.eco/docs/Auth
这将向您介绍GUN的加密概念以及创建和登录用户的难易程度。
下一步,您将看到对gun.user()
对象的写入具有与gun
相同的API,但自动将其默认为write-restricted
(对该用户,其他人无法篡改它(和public-read
。
因此,从今天(2018/6/27(开始,您可以使用它来实现您想要的。您只需要知道您希望写入来自哪些用户,然后订阅它。使用一些额外的代码,您今天就可以执行此操作(点击 https://gitter.im/amark/gun 寻求帮助!
将来,您可以期待这样的 API:
user.get('thingOthers').get('canWriteTo').trust(alice)
现在,当您订阅数据时,您将从允许写入数据的人那里获得实时更新:
user.get('thingOthers').get('canWriteTo').on(data => console.log(data))
根据您的用例(可能略有不同的 API,但希望不是(,这也适用于读取您的数据的其他人。
例如,假设您是用户Bob
(因此Bob添加了Alice作为写入访问权限(,并且某些第三方查看器(例如Carl
想要读取Bob的数据,如果他们要:
bob.get('thingsOthers').get('canWriteTo').on(data => console.log(data))
它将订阅仅允许写入数据的实时更新。
为什么这里有区别,您应该注意的细微差别是什么?
A(一个人可能想相信别人说的话,但不相信别人代表他们说话。
B(如果你确实信任某人代表你发言,观众(如卡尔(现在必须相信授权者(鲍勃(允许爱丽丝说些什么。这可能是危险的集中化!!(来自信任/权限模型,即使算法是P2P/去中心化的,GUN就是。
因此,虽然(A(可能有点复杂的细微差别,但这可能是更好的途径。(B(更容易考虑,但可能导致集中的权威(例如,世界上所有的卡尔都相信鲍勃为他们做决定,而卡尔斯[使用(A(]来决定他们认为谁应该拥有权威会更好。
例如,鲍勃将爱丽丝添加为写访问权限,但卡尔也可以!这样,如果 Bob 和 Carl 在谁应该拥有写入权限方面存在分歧,他们就不必相互信任!他们都会看到他们允许的东西,但看不到对方允许的东西。
显然,对于许多应用程序来说,每个人都"在同一页面上"并让所有 Carls 都信任 Bob 来决定谁可以写入数据是有意义的。所以(B(仍然是一个不错的选择,只要知道其中的含义,并且知道有替代的信任模式!