Как я бесплатно создал статический веб-сайт с аутентификацией пользователей и динамической базой данных

Как я бесплатно создал статический веб-сайт с аутентификацией пользователей и динамической базой данных

14 декабря 2022 г.

В этой статье показано, как я БЕСПЛАТНО создал функциональное статическое веб-приложение с аутентификацией пользователей и динамической базой данных, используя Webflow, Vault Vision, Cyclic и Airtable с LowCode

За последние несколько недель я разговаривал со многими основателями технологий, которые начинали с идеи для бизнеса или услуги программного обеспечения, требующего взаимодействия со своими клиентами через Интернет. Один из них был сервисом, который предоставлял благотворительным организациям возможность публиковать запросы на пожертвования, а другой — сервисом, который соединял водителей доставки с близлежащими общественными туалетами. Я обнаружил серьезное препятствие, ожидающее этих основателей, когда они переходят от простого статического веб-сайта в стиле брошюры к созданию приложения SaaS. Переход на современное приложение SaaS, которое требует индивидуальной аутентификации пользователя и контролируемого доступа к записям, обычно требовал усилий по разработке, которые были вне бюджета, поэтому эти предприниматели были вынуждены использовать формы отправки по электронной почте или онлайн-таблицы, которые недостаточно соответствовали их аутентификации. потребности и были громоздкими.

Как любой основатель, я знал, что должен быть лучший способ; со всеми новыми инструментами SaaS LowCode, которые предлагают БЕСПЛАТНЫЙ тарифный план, несомненно, существует lowcode и удобное решение, которое не требует найма разработчика для создания собственного трехуровневого приложения за тысячи долларов.

Чтобы создать полнофункциональную и безопасную систему аутентификации в приложениях SaaS, мы остановились на следующих требованиях:

* низкая стоимость или БЕСПЛАТНО * #LowCode должен быть с возможностью копирования/вставки и быстрым саморедактированием, не полагаясь на дорогих разработчиков. * Вся управляемая инфраструктура. Серверы, сети, системы и диски должны быть чьей-то чужой проблемой. Как только я заставлю его работать в полдень, лучше, чтобы он оставался таковым всю ночь, и работа какого-то другого незамеченного системного администратора, если это не так. * Пользователи приложения должны иметь возможность входить и выходить из системы * Пользователи приложения должны иметь возможность добавлять/обновлять/просматривать свои записи и данные (и ТОЛЬКО свои данные) * Необходимо иметь некоторые предварительно созданные простые административные интерфейсы для самих владельцев сервисов, чтобы управлять и иметь доступ ко ВСЕМ данным. * Должна использоваться функция «укажи и щелкни», «скопируй и вставь» для стандартных функций, с возможностью иметь расширенные настраиваемые функции, доступные с небольшими фрагментами кода.

Современное, безопасное и разумное решение — это трехуровневое приложение. Как сделать его проще?

  • Внешний интерфейс (легко сделать простым с помощью таких веб-конструкторов, как Wix, Webflow, GoDaddy)
  • Средний уровень (хм, это проблема, большинство текущих вариантов нарушают одно из требований, в частности, требуют индивидуальной разработки)
  • Уровень данных (легко упростить с помощью Airtable)

Давайте разберем, для чего нам нужен средний уровень.

  • Держите ключ API и храните его в безопасности для доступа к Airtable, мы можем использовать его во внешнем интерфейсе, поскольку он общедоступен, поэтому он должен быть на среднем уровне.
  • Обработка аутентификации пользователя для создания сеансов и токенов доступа для безопасной идентификации и аутентификации пользователей как во внешнем интерфейсе, так и на уровне данных.

:::информация К счастью, есть службы аутентификации, такие как Vault Vision (отказ от ответственности: автор этой прекрасной статьи связан с Vault Vision. Пожалуйста, проверьте нас https://vaultvision.com :) )

:::

Таким образом, Vault Vision может прекрасно справляться с управлением пользователями и аутентификацией на статическом веб-сайте, но все же должен быть компонент для хранения ключа API данных и привязки аутентификации пользователя к данным, чтобы доступ пользователя к записям контролировался и ограничивался. только тем пользователям, которые должны иметь доступ. Здесь все становится интереснее, и если подытожить проблему:

<цитата>

Можем ли мы создать универсальный повторно используемый компонент среднего уровня, который не нуждается в «постоянной» разработке, который может хранить ключ API, проверять токены аутентификации пользователя и применять ограничения доступа к данным, и НЕ требует разработчиков или системы? администраторам для управления и развертывания, и может быть БЕСПЛАТНО?»

ДА!! Потребовалось немного вдохновенной решимости, но там, где есть воля, есть способ «Node-Auth-Airtable», открытый Vault Vision, предназначенный для работы в качестве бессерверного приложения Express API на платформе приложений Cyclic, которая предлагает БЕСПЛАТНО план.

Вот ссылка GitHub на Vault Vision 'Generic Node Auth Airtable Bridge', который вы можете легко скопировать/клонировать. для запуска в Cyclic.

System Diagram for #LowCode With Auth and Dynamic Data

Это решение может подойти не всем, но давайте рассмотрим плюсы и минусы этого решения по сравнению со стандартным трехуровневым приложением.

Плюсы

  • БЕСПЛАТНО, невозможно переоценить, насколько это здорово для начинающего основателя, это отличный способ проверить бизнес-идеи и концепции обслуживания с помощью работоспособных бета-версий.
  • LowCode, который можно установить и отредактировать самостоятельно, обладая минимальными техническими знаниями

  • Модульный, большинство услуг может предоставляться многими поставщиками
  • Расширяемый с помощью простого JavaScript, сложные настройки могут быть добавлены с минимальными усилиями.
  • Можно масштабировать за счет небольших разовых замен.
  • Быстрое развертывание и настройка менее чем за 1 час.
  • Поддержка доступна через Discord и форумы
  • Структуры данных и административный интерфейс просты и превосходны
  • Низкая сложность, никаких абстракций, очень понятно

Минусы

  • Разработано специально для API данных Airtable.
  • Эзотерический, нестандартный архитектурный шаблон
  • Операции DELETE на самом деле не поддерживаются, их можно выполнить, но нет «корзины», если пользователь сотрет свои данные.
  • Масштабируемость ограничена, прежде чем потребуется увеличение размеров компонентов и настройка инфраструктуры.
  • Сложные структуры данных, ACID-транзакции и ограничения внешнего ключа недоступны
  • Компоненты тесно связаны между собой, и клиентскому интерфейсу не нужно сопоставлять форматы данных с интерфейсами уровня данных.

Это подходит вам?

Если вы ищете быстрый и простой способ создать недорогое динамическое веб-приложение, в котором пользователи смогут создавать и просматривать свои собственные записи в простых структурах данных, тогда ДА!

Примеры использования:

  • Учебное заведение, которое хочет публиковать оценки учащихся.
  • Приложение для голосования или опроса
  • Заявка на билет/работу
  • Отправка отчета о расходах


Итак, перейдем к мельчайшим деталям. Ниже приведены 11 шагов, необходимых для того, чтобы попробовать это и получить работающий пример для ваших собственных учетных записей и веб-сайтов.

Подробности шагов (внимание, много скриншотов)

Вы собираетесь создать 4 учетных записи и отслеживать следующие 8 значений идентификаторов, доменов и URL-адресов. Вы должны отслеживать эти значения в окне блокнота для удобства, которые вы будете часто копировать и вставлять.

  1. Ключ API (от Airtable)
  2. baseid (из Airtable)
  3. таблица (из Airtable)
  4. URL веб-сайта (из Webflow)
  5. URL/домен коннектора моста (из Cyclic)
  6. домен арендатора (сайт, на котором будет отображаться ваша страница входа) (из Vault Vision)
  7. client_id (из Vault Vision)
  8. client_secret (из Vault Vision)

Шаг 1

Создайте Airtable и запишите эти 3 значения на следующих 2 экранах:

  • APIKEY
  • baseid
  • table

При создании таблицы; убедитесь, что в вашей таблице есть один текстовый столбец с именем vv_id (ЭТО ОЧЕНЬ ВАЖНО)

Посетите: https://airtable.com

Airtable Table Creation - NOTE the vv_id column

Получите ключ API здесь.

Where to get your Airtable API key

Шаг 2

Создайте свой статический WebHost в Webflow, обратите внимание на следующее:

  • URL веб-сайта переднего плана

Создайте веб-сайт в Webflow и начните с пустого сайта

Посетите: https://webflow.com/dashboard/sites/new

Webflow Blank Site

После создания вы можете получить URL-адрес веб-сайта здесь

![Обратите внимание на адрес веб-сайта — в данном случае: https://demo-site-6a158e.webflow.io

](https://cdn.hackernoon.com/images/AOlJRvEucFTafhEGDZ1zCOoPUXa2-81d3l51.png)

**Осторожно**

Для небольшого фрагмента кода js, который мы будем использовать, вам нужно будет использовать платную версию Webflow ИЛИ есть 2 других варианта: 1) придерживаться статических кнопок HTML и форм HTML, которые вы публикуете в своем коннекторе моста, и переместите часть логики туда, ИЛИ 2) вы можете разместить статические ресурсы на страницах GitHub https://pages.github.com/ и создайте репозиторий с именем {your_github_username}.github.io, и он будет обслуживаться из той же конечной точки https://{your_github_username}.github.io

Пока не беспокойтесь о содержании, мы добавим его позже. Сейчас нам просто нужно получить URL-адрес веб-сайта.

Шаг 3

Создайте коннектор моста аутентификации пользователя в Cyclic, обратите внимание на следующее:

  • имя домена коннектора

Создайте учетную запись GitHub, если у вас ее еще нет, Cyclic использует эту учетную запись для аутентификации и публикации

Посетите: https://github.com/

Добавьте этот репозиторий в свою учетную запись: https://github.com/vaultvision/node-auth-airtable

Создайте учетную запись Cyclic и разрешите ей доступ к GitHub

Посетите: https://www.cyclop.sh/

Cyclic connecting to GitHub

Вам нужно будет предоставить учетной записи Cyclic доступ к общедоступным репозиториям GitHub.

Link to your forked repo, if you use Starter Template you will have to manually update the code

Выберите «node-auth-airtable», если вы разветвили его из https://github.com/vaultvision/node-auth-airtable.

Select node-auth-airtable, if this is not shown you did not fork the right repo correctly

После того, как вы выберете правильный репозиторий, Cyclic запросит окончательное разрешение на установку.

Give Cyclic the go-ahead to install your auth bridge connector

Запишите имя домена коннектора моста на этом экране

![Обратите внимание на URL-адрес коннектора моста — в данном случае: https://adventurous-jade-chimpanzee.cycle.app

](https://cdn.hackernoon.com/images/AOlJRvEucFTafhEGDZ1zCOoPUXa2-mri3lnz.png)

Шаг 4

Создайте клиент и приложение для аутентификации Vault Vision

Посетите: https://manage.vaultvision.com/register

Выберите имя для своей страницы входа, это будет домен/URL страницы, где ваши пользователи входят и регистрируются

Create a login auth tenant for your login page. Make note the tenant domain - in this case:

Введите название вашей компании, оно может быть каким угодно

Add a company name

Обязательно выберите «Традиционное веб-приложение» в качестве типа приложения.

И выберите имя для своего приложения, это может быть любое имя, которое никогда не будет показано пользователю, и введите следующие значения для вашего приложения:

URL обратного вызова должен заканчиваться на /oidc/callback

URL-адрес выхода должен заканчиваться на /oidc/logout

URL-адрес входа — это просто URL-адрес вашей домашней страницы

URL-адрес обратного вызова

-------------------

https://adventurous-jade-chimpanzee.cycle.app/oidc/callback

URL-адрес для входа

-------------------

https://demo-site-6a158e.webflow.io (если вы используете Webflow)

https://vaultvisiondemo.github.io (если вы находитесь на страницах GitHub)

URL выхода

-------------------

https://adventurous-jade-chimpanzee.cycle.app/oidc/logout

Settings for your auth application to link back to your website and bridge connector

Make note of these values, you will need all 3 (auth tenant domain, client_id, client_secret)

Обратите внимание:

  • домен клиента авторизации (сайт, на котором будет отображаться ваша страница входа)
  • идентификатор_клиента
  • client_secret

Шаг 5

Вернитесь в приложение Cyclic и обновите эти переменные (на вкладке «Переменные» в меню)

Посетите: https://app.cyclop.sh/#/app/

Bridge connector variables and where they were provided

Шаг 6

Вернитесь в Webflow или на свою страницу GitHub, скопируйте и вставьте фрагмент html и фрагменты скрипта и обновите эти 3 значения в теге скрипта javascript:

  • const authhostdomain
  • постоянный базовый идентификатор
  • постоянная таблица

Вы можете получить фрагмент HTML и скрипта отсюда:

https://github.com/vaultvisiondemo/vaultvisiondemo.github.io/blob /main/index.html

Есть 3 раздела: блок HTML, блок стиля и блок сценария

В блоке скрипта есть 3 константы, которые нужно обновить своими уникальными значениями

{это значения для этой демонстрации, но вам нужно будет использовать свои уникальные значения

  • const authhostdomain="adventurous-jade-chimpanzee.cycle.app";
  • const baseid = "app8Bj4fSoM2Hv3s9";
  • const table = "демо-таблица";

* const authhostdomain -> предоставленный Cyclic, это домен вашего соединителя моста (НЕ полный URL-адрес, здесь не должно быть добавлено https://) * константный базовый идентификатор -> предоставленный Airtable, базовый идентификатор вашей «базы» в Airtable * константная таблица -> предоставленное Airtable, имя, которое вы выбрали для своей таблицы

Front End Javascript Script Variables to connect to the bridge and specify the Airtable base and table

Все настройки и настройки завершены!! Пора попробовать.

Шаг 7

Создайте новую учетную запись в своем внешнем интерфейсе (убедитесь, что вы не находитесь в режиме инкогнито, или включите сторонние файлы cookie https://knowledge.kaltura.com/help/enabling-3rd-party-cookies-for-chrome-incognito-mode)

Посетите: {каким бы ни был ваш внешний URL-адрес — в нашем случае это были страницы GitHub https://vaultvisiondemo.github.io}

Simple static front end showing dynamic and auth features

Register a new user for testing and demostration

Шаг 8

Добавить новые данные

Кнопка «Добавить Air Table» добавит некоторые статические данные в ваш Airtable и автоматически прикрепит правильный vv_id (user_id) для пользователя, под которым вы вошли в систему.

Added some records tied to the logged in user

Шаг 9

Список содержания данных

Кнопка «list Air Table» будет считывать все записи, прикрепленные к правильному vv_id (user_id) для текущего пользователя, вошедшего в систему. Вы можете выйти из системы, создать нового пользователя и повторить тот же процесс, и вы увидит, что записи каждого пользователя являются динамическими и доступны только этому пользователю. Один пользователь не может получить доступ к записям других пользователей.

Retrieve the records list for all the records attached to this user

Шаг 10

Администратор Airtable видит все

Вернувшись в Airtable, вы можете просматривать и изменять ВСЕ записи в качестве администратора Airtable, а также теперь вы можете видеть отдельные записи, прикрепленные к каждому пользователю.

Airtable with records that are tied to a user

Шаг 11

Управление пользователями, вы также можете управлять этими пользователями с помощью блокировки/удаления/сброса учетных данных на панели управления пользователями.

User Management where users can be blocked, deleted, or have their credential reset

Вуаля!!!

Несмотря на то, что это решение состоит из нескольких компонентов, все они понятны, ориентированы на одну цель, #LowCode и имеют несколько БЕСПЛАТНЫХ опций, но при этом предоставляют вам динамические пользовательские функции полного приложения с удобством построения Webflow и #LowCode.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE