Google reCAPTCHA давно всех задолбала. Cloudflare подсунули свою штуку — Turnstile. Бесплатно, работает быстро, не орёт про светофоры и велосипеды. Под Laravel есть готовый пакет. Ставим и не морочим голову.
Установка
Тут без фокусов. Вбил:
composer require ryangjchandler/laravel-cloudflare-turnstile
Пакет подтянулся, и всё, поехали дальше.
Конфигурация
В config/services.php добавляешь секцию:
'turnstile' => [
'key' => env('TURNSTILE_SITE_KEY'),
'secret' => env('TURNSTILE_SECRET_KEY'),
],
В .env свои ключи:
TURNSTILE_SITE_KEY="1x00000000000000000000AA"
TURNSTILE_SECRET_KEY="2x0000000000000000000000000000000AA"
Без них понятно — ничего работать не будет.
Вставка на фронте
В Blade-шаблон кидаешь скрипт:
<head>
@turnstileScripts()
</head>
А в форму вставляешь компонент:
<form action="/" method="POST">
<x-turnstile />
<button type="submit">Отправить</button>
</form>
Готово, виджет встал. Не надо вручную писать убогие div’ы с data-атрибутами.
Проверка на сервере
Laravel всё сделал красиво — просто правило валидации.
use Illuminate\Validation\Rule;
public function submit(Request $request)
{
$request->validate([
'cf-turnstile-response' => ['required', Rule::turnstile()],
]);
}
Или через отдельное правило:
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;
public function submit(Request $request, Turnstile $turnstile)
{
$request->validate([
'cf-turnstile-response' => ['required', $turnstile],
]);
}
Работает из коробки. Без плясок, без своей логики запросов к API Cloudflare.
Настройка виджета
Нужно пошаманить с внешним видом? Просто добавь атрибуты в компонент:
<x-turnstile theme="dark" size="compact" />
Документацию можно открыть, если реально надо — но по факту хватает пары параметров.
Livewire
Да, и с Livewire дружит:
<x-turnstile wire:model="captchaToken" />
После успешной проверки в модель улетает токен.
Итог
Каждый раз, когда Google заставляет меня тыкать в картинки с автобусами, я думаю, что это не защита от ботов, а проверка на психику. Turnstile от Cloudflare — штука, которая реально экономит нервы (пока что).
- Забыл про светофоры.
- Код интеграции минимален.
- Есть готовый пакет под Laravel.
Google со своей reCAPTCHA пусть крутит картинки дальше.
0 комментариев