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