Основано на реальных событиях.
IPFS было новым модным словом в городе несколько лет назад, в 2015 году, когда над ним только начали работать. Если вы через семь лет до сих пор не использовали IPFS ни в одном из своих проектов, значит, вы, мой друг, отстали от времени.
В этой статье мы собираемся понять самые основы того, как использовать IPFS в качестве серверной части хранилища в проекте Django. Чтобы лучше понять это в реальном сценарии, я собираюсь выбрать свой проект, который использует IPFS для правильного использования.
1. Приложение с проблемой
Рассматриваемое веб-приложение в основном представляет собой интерфейс, предназначенный для студентов и преподавателей. Учащиеся могут выбирать интересующие их предметы и использовать различные фильтры для поиска преподавателей с конкретными предпочтениями. Педагоги смогут создавать свои собственные профили и упоминать классы, которые они преподают, и предметы, в которых они являются экспертами.
Все было хорошо, за исключением того, что в плане была большая зияющая дыра.
У меня не было никакого способа определить, был ли преподаватель настоящим или фальшивым. Любой может выдать себя за учителя и зарегистрироваться, используя поддельные учетные данные, чтобы охотиться на учеников.
Я подумал об использовании входа в социальные сети для проверки, но идея не удалась. Если злоумышленник действительно определен, он также может легко создать поддельный аккаунт Google.
Эта проблема была серьезной ошибкой, и ее нужно было немедленно устранить.
2. Идея исправить разрыв
Все, что мне нужно было сделать, это подтвердить личность, верно?
Почему бы не использовать Aadhaar ?!
Для неиндийцев Aadhaar - это поддающийся проверке 12-значный идентификационный номер, выдаваемый Центром уникальной идентификации Индии (UIDAI) жителю Индии бесплатно. Это сложный процесс, включающий биометрическое сканирование, и его нелегко подделать.
Тогда я попал в очередную кочку.
Хранение номеров Aadhaar в моей базе данных было не очень безопасным. Хотя Django обеспечивает многоуровневую безопасность, я не чувствовал себя достаточно уверенным, чтобы хранить крупномасштабные числа Aadhaar. В случае утечки данных результаты будут плачевными.
3. IPFS спасает положение
Именно тогда я наткнулся на IPFS. На самом деле, я впервые услышал об этом, когда возился с Ethereum и блокчейном, но в конце концов забыл об этом. Но я вспомнил о его функциональности и понял, что он идеально подходит для моих нужд.
Я бы не стал вдаваться в подробности об архитектуре IPFS и о том, как она работает, но я просто поделюсь парочкой моментов, чтобы вы с ней познакомились. Для получения дополнительной информации я свяжу несколько ресурсов в конце, хотя я настоятельно рекомендую читателю поискать это самостоятельно.
Идея состоит в том, что если вы хотите получить доступ к определенной странице из своего браузера, IPFS спросит всю сеть:« Есть ли у кого-нибудь данные, соответствующие этому хешу? Узел в IPFS, содержащий соответствующий хэш, вернет данные, что позволит вам получить к ним доступ из любого места (и, возможно, даже в автономном режиме) ».
Infura IPFS позволяет чрезвычайно быстро загружать и извлекать данные, не беспокоясь о других проблемах конфигурации.
Я планировал попросить пользователя загрузить свой номер Aadhar, проверить его истинность (ссылка на GitHub на код проверки) и загрузить его в сеть IPFS через Infura API. Возвращенный хеш будет храниться в базе данных.
Хорошо, время для реализации.
4. Реализация
(Приведенные здесь фрагменты кода предоставляют только детали, относящиеся к IPFS. Это НЕ части полного кода проекта.)
Прежде всего, мне нужно было создать модель Aadhaar для хранения сгенерированного хэша. Я мог бы обойтись без этого, поскольку у меня не было необходимости снова получать информацию Aadhaar, но я все равно сделал это для будущих целей.
Затем мне пришлось создать форму для приема информации Aadhaar.
Эта форма отправляет данные на адрес "aadhaar". Итак, я создал его в urls.py.
NB. В этом проекте имя моего приложения было «members», отсюда и импорт.
Теперь мне нужно было создать представление с именем «handle_aadhaar» в файле views.py в моем приложении.
Код в значительной степени не требует пояснений.
Если метод запроса - POST, он проверяет отправленные учетные данные Aadhaar. Если это правда, он загружает их, и сгенерированный хэш отправляется в мою модель «Aadhaar». Если значение false, выполняется перенаправление на ту же страницу с предупреждением.
Заключение
Я надеюсь, что этот пост помог вам понять IPFS и реализовать его как серверную часть хранилища в вашем проекте Django. Существуют и другие пакеты для использования IPFS, но мой вариант использования не требовал таких подробных библиотек, и проблема была решена несколькими строками кода.
Однако, прежде чем вы приступите к использованию IPFS в Django, я бы порекомендовал вам просмотреть несколько доступных пакетов и прочитать некоторую документацию, прежде чем углубляться в предмет.
Ресурсы -
Больше контента на plainenglish.io