Приватное чтиво и публичное чтение в gundb
Я хочу создать microblog
где каждый может прочитать все сообщения, но только владелец может удалять или редактировать сообщения. В gundb
без моря каждый может редактировать или удалять сообщения, в sea( gun.user())
Я должен поделиться открытым ключом, в море, как я получаю все сообщения пользователя и показываю сообщения на временной шкале? Как я могу создать это с Gundb?
1 ответ
Каждый раз, когда создается пользователь, открытый ключ может передаваться всем остальным пользователям. (Иметь супер-пользователя, который ведет список). Затем ваш интерфейсный веб-сайт будет перебирать все открытые ключи, чтобы получить все сообщения, которые они сделали, и показать их. Таким образом, люди могут читать все сообщения, но не редактировать. Другой способ сделать это - заставить суперпользователя запустить процесс, который постоянно индексирует и "копирует" записи в свой собственный график, и этот график может быть тем, что просматривается. (делает его еще более защищенным) Это ответ очень высокого уровня, но все это возможно с помощью gun.user() и структуры ядра пистолета.
Я искал ответы на вопросы о конфиденциальности данных в gun
, и вот мой ответ:
- Импорт и определение переменных
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>
var gun = Gun()
- Создать первого автора микроблога
gun.user().create('firstMicroblogAuthor', 'somePassword')
gun.user().auth('firstMicroblogAuthor', 'somePassword')
- Создайте сообщение и получите автора
var post = {
title: 'First post',
text: 'Hello world!'
}
var author = gun.get('~@firstMicroblogAuthor') // There should be the same `username` in Step 2
- Сохранить сообщение
gun
.user()
.get('posts')
.set(post) // At this step, we saved the post in a user schedule, which by default is only writable by the user
.once(function() {
this.get('author').put(author) // In this step, we link our post with the author (with our user)
gun.get('posts').set(this) // At this step, we save the post with the author installed in the main graph
})
- Убедитесь, что наши сообщения защищены от редактирования другими пользователями:
gun.user().leave()
gun.user().create('secondMicroblogAuthor', 'somePassword')
gun.user().auth('secondMicroblogAuthor', 'somePassword')
gun
.get('posts') // Read posts from public graph
.once(function() {
this.get('text').put('Goodbye world!') // In this case, we will get an error, because this post was protected
})
Утверждение о том, что todo-dapp является общедоступным для чтения пользователем, только запись вводит в заблуждение, на самом деле оно не дает вам возможности просматривать документы других пользователей.
На самом деле, я был долгое время недоволен тем, что на самом деле нет документации или примеров того, как это сделать, и когда вы спрашиваете разработчиков, вы просто сталкиваетесь с уклонением после уклонения.
База данных полезна только в том случае, если есть способ отделить интересы пользователей друг от друга