грант!Удивительно слышать от вас, извините за задержку с ответом (я не уверен, кто был комментирующим, поскольку это не помогло вашей ситуации).
Это отличный вопрос, и у вас естьнесколько уже тыкали в пределы безопасности и технологии браузера - честно, ни один из них не очень хорош.Давайте рассмотрим:
- , если вы добавите
user.recall({sessionStorage: true})
, он попытается автоматически войти в систему. Но вы правы, есть некоторые компромиссы безопасности, но я думаю, что это разумно. localStorage
.Я слышал, как несколько человек жалуются, что разные браузеры плохо обрабатывают sessionStorage (не сохраняет в новой вкладке и т. Д.), Поэтому следующим вариантом будет использование localStorage.Однако я считаю, что это актуальная проблема безопасности. - SPA.Одностраничное приложение - это уже будет полезно, если вы пытаетесь распространять автономные упакованные «приложения».Но вы правы, у вас все еще есть проблема обновления.По моему опыту, (1) работал достаточно хорошо, чтобы сделать это удобным для пользователя.
- PIN.Еще одна идея, которую разработало наше сообщество, заключалась в использовании (1 ~ 3), но в сочетании с PIN-кодом устройства.Это означает, что вы можете хранить его в localStorage с разумными допущениями в отношении безопасности, а при обновлении / возобновлении пользователи вводят свой ПИН-код для расшифровки своего сеанса.
IndexedDB
.Оказывается, что API-интерфейс WebCrypto имеет возможность импортировать ключи и будет шифровать их в IndexedDB и извлекать их позже, не передавая их на пользовательскую землю - по крайней мере, это то, что я слышал.Однако вам все еще приходится иметь дело с первоначальным получением ключей, и поддержка IndexedDB варьируется, и вы должны написать для нее плагин GUN. - Расширение браузера.Мне это нравится меньше всего, так как для этого требуется, чтобы пользователь что-то установил, но из-за того, что браузеры не предоставляют какой-то встроенной функциональности, эквивалентной защищенной, мы должны вмешаться.Хорошая новость заключается в том, что происходит интеграция GUN + MetaMask, и MetaMask уже имеет 1M + установок, так что может быть шанс, что у ваших пользователей уже есть.
- Браузерный API.Мы будем работать с командой MetaMask и другими, чтобы получить стандартный API для этого в качестве стандарта.Я надеюсь, что Brave последует примеру MetaMask, а FireFox последует за Brave, а Chrome последним.
Между тем, ваше первоначальное предложение, вероятно, лучше всего - использовать (1) sessionStorage.Это будет / является прямой / обратной совместимостью с MetaMask.В среднесрочной перспективе, надеюсь, вы или кто-то еще в сообществе получите (5) работу.И тогда долгосрочное (6 и 7) будет решением.
А пока, посмотрите демонстрацию MetaMask: https://twitter.com/marknadal/status/1062153254283276288
Редактировать: MetaMask все еще работает над ихAPI для этого, тем временем, вы можете использовать наше расширение http://party.lol.