#forms #nuxt.js #recaptcha
#формы #nuxt.js #recaptcha
Вопрос:
Я просто думаю, какой наилучший подход заключается в реализации простой формы с загрузкой файлов на статическом веб-сайте без какого-либо бэкэнда.
Сценарий:
У меня есть статический веб-сайт (NuxtJS), где можно заполнить форму и загрузить файлы. Чтобы защитить эту форму, я хотел использовать recaptcha от Google, но, прочитав немного дальше в их документации, кажется, что мне нужен серверный сервер, который является излишним для статического веб-сайта. Кроме того, я хотел поддерживать загрузку файлов… довольно сложно без серверной части.
О чем я думал:
Может быть, существующий продукт, который делает именно то, что я ищу? Или я должен создать конвейер AWS Lambda (конечно, с корзиной S3), чтобы он функционировал как мой «серверный сервер» для recaptcha и загрузки файлов. Есть ли какой-либо подход, который упрощает этот сценарий, или я сейчас думаю о сложном.
Пример использования / блок-схема:
- Пользователь заходит на веб-сайт.
- Заполняет форму.
- (необязательно) загружает файлы
- Проверяет recaptcha
- Нажимает Отправить — отправляет «Сообщение» в канал slack наших компаний / или по электронной почте.
Ответ №1:
Однако я решил эту «общую» задачу с помощью пользовательского «бэкэнда», размещенного на AWS Lambda, что делает весь материал «бессерверным».
Для тех, кто интересуется «как настроить серверную часть без сервера», вот текущая блок-схема, которую я использовал.
Как вы можете видеть, после проверки recaptcha на стороне клиента и создания токена он отправляется на шлюз AWS API, который запускает лямбда-функцию (реализацию серверной части NodeJS), где проверяется токен и для загрузки файлов генерируются предварительно подписанные URI. Обратите внимание: шлюзу API и корзине S3 требуется действительная конфигурация CORS для взаимодействия друг с другом и с миром.
Комментарии:
1. Прекрасная @Markus, есть ли у вас шанс поделиться этой настройкой для изучения?
2. Настройка / код в настоящее время находятся во внутреннем репозитории. Возможно, я смогу написать статью об этом через несколько дней.
3. Это было бы здорово, пожалуйста, дайте мне знать, если вы это сделаете, Маркус!