Статический веб-сайт, загрузка файлов и recaptcha

#forms #nuxt.js #recaptcha

#формы #nuxt.js #recaptcha

Вопрос:

Я просто думаю, какой наилучший подход заключается в реализации простой формы с загрузкой файлов на статическом веб-сайте без какого-либо бэкэнда.

Сценарий:

У меня есть статический веб-сайт (NuxtJS), где можно заполнить форму и загрузить файлы. Чтобы защитить эту форму, я хотел использовать recaptcha от Google, но, прочитав немного дальше в их документации, кажется, что мне нужен серверный сервер, который является излишним для статического веб-сайта. Кроме того, я хотел поддерживать загрузку файлов… довольно сложно без серверной части.

О чем я думал:

Может быть, существующий продукт, который делает именно то, что я ищу? Или я должен создать конвейер AWS Lambda (конечно, с корзиной S3), чтобы он функционировал как мой «серверный сервер» для recaptcha и загрузки файлов. Есть ли какой-либо подход, который упрощает этот сценарий, или я сейчас думаю о сложном.

Пример использования / блок-схема:

  1. Пользователь заходит на веб-сайт.
  2. Заполняет форму.
  3. (необязательно) загружает файлы
  4. Проверяет recaptcha
  5. Нажимает Отправить — отправляет «Сообщение» в канал slack наших компаний / или по электронной почте.

Ответ №1:

Однако я решил эту «общую» задачу с помощью пользовательского «бэкэнда», размещенного на AWS Lambda, что делает весь материал «бессерверным».

Для тех, кто интересуется «как настроить серверную часть без сервера», вот текущая блок-схема, которую я использовал.

введите описание изображения здесь

Как вы можете видеть, после проверки recaptcha на стороне клиента и создания токена он отправляется на шлюз AWS API, который запускает лямбда-функцию (реализацию серверной части NodeJS), где проверяется токен и для загрузки файлов генерируются предварительно подписанные URI. Обратите внимание: шлюзу API и корзине S3 требуется действительная конфигурация CORS для взаимодействия друг с другом и с миром.

Комментарии:

1. Прекрасная @Markus, есть ли у вас шанс поделиться этой настройкой для изучения?

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

3. Это было бы здорово, пожалуйста, дайте мне знать, если вы это сделаете, Маркус!